본문 바로가기
💻 Programming 개발/🍎 iOS 개발, Swift

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 0. 시작하기 전에

by 킴디 kimdee 2022. 5. 13.
반응형

요즘 알고리즘 공부를 하면서 Raywenderlich.com 에서 나온 Data Structures & Algorithms in Swift이 책을 보고 있습니다. 

https://www.raywenderlich.com/books/data-structures-algorithms-in-swift

 

저는 정리하다보면 자꾸 번역하게 되는데, 노션에 정리해둔 걸 보고 티스토리에도 올리면 좋겠다 싶어서 공유해봅니다. 이 책은 정확히는 출판물 형태의 책은 아니고, 웹페이지 형태로 되어있는데요. Raywenderlich 에서 프로 구독으로 월 39.99달러를 낸다면 책의 모든 내용을 볼 수 있습니다. 

 

구독에 대해서는 아래 링크에서 자세히 확인하실 수 있습니다.

 

Subscription | raywenderlich.com Store

Can I share my account with others in the office? No, according to our Terms of Service, your login may only be used by one person — i.e., a single login may not be shared by multiple people. If you are an organization, you must create a separate account

store.raywenderlich.com

 

유료 제품이기 때문에 티스토리에 공개하는 것은 데모 공개본인 섹션 2의 챕터 7인 연결리스트 도전과제까지 번역하여 공개할 예정입니다. 헌사나 소개, 감사의 말과 같이 책의 핵심 내용과 직접적으로 관계없는 부분은 링크로 대체합니다!  즐겁게 봐주세요 :) 

 


 

섹션 0. 시작하기 전에

1. 준비물

이 책을 따라가기에 위해서 아래 준비물이 필요합니다.

  • 최신 Mac OS가 구동되는 Mac
  • 개발도구 Xcode를 설치할 수 있습니다.
  • Xcode 13 또는 이후 버전
  • Xcode는 Swift로 코드를 작성하기 위한 주요 개발도구입니다. Swift 5.5가 포함되어 있으므로 최소한 Xcode 13버전이 필요합니다. 여기(https://apple.co/1FLn51R) Mac 앱 스토어에서 최신 버전의 Xcode를 무료로 다운받을 수 있습니다.

만약 Xcode 최신 버전을 설치하지 않았다면, 이 책을 진행하기 전에 설치를 마쳐야합니다. 책에서 다루는 코드는 Swift 5.5와 Xcode 13에서 구동되므로, 이전 버전으로 작업할 경우 길을 잃을 수도 있습니다.

 

2. 책의 소스코드, 포럼

2-1) 책 자료 다운받기

이 책의 자료는 Github 저장소에서 복제(Clone)하거나 다운로드할 수 있습니다.

2-2) 포럼

이 책의 공식 포럼을 아래 링크에 개설하였습니다. 책에 대해 질문을 하거나, 책에서 발견한 오류에 대해 올릴 수 있습니다.

https://forums.raywenderlich.com/c/books/data-structures-algorithms-swift

 

3. 헌사

 

Data Structures & Algorithms in Swift, Chapter iii: Dedications

“To my team, family, and friends.” — Kelvin Lau “To my friends and family who I know will never read this book.” — Vincent Ngo

www.raywenderlich.com

4. 팀소개

 

Data Structures & Algorithms in Swift, Chapter iv: About the Team

Kelvin Lau is an author of this book. Kelvin is a physicist turned Swift iOS Developer. While he’s currently entrenched with iOS development, he often reminisces of his aspirations to be part of the efforts in space exploration. Outside of programming wo

www.raywenderlich.com

 

5. 감사의 말

 

Data Structures & Algorithms in Swift, Chapter v: Acknowledgments

We’d like to acknowledge the efforts of the following contributors to the Swift Algorithm Club GitHub repo (https://github.com/raywenderlich/swift-algorithm-club), upon whose work portions of this book are based. Matthijs Hollemans, the original creator

www.raywenderlich.com

 

 

6. 서문

“iOS 개발자는 반드시 알고리즘과 자료구조를 배워야하나요?”

 

이 질문은 제가 속한 온라인 토론그룹에서 많이 올라오는 질문입니다. 제 개인의 전문 개발자로서의 경험을 공유함으로써 이 질문에 답해보고자 합니다.

 

프로그래밍을 취미로 시작한 많은 사람들과 마찬가지로, 저 역시도 컴퓨터 과학에 대한 배경지식 없이 독학으로 프로그래밍을 익혔습니다. 수년에 걸쳐 약간의 지식은 얻었지만, 알고리즘과 데이터 구조 이면의 확고한 기반지식은 없었습니다.

 

그게 문제가 되었을까요? 아니요. 대부분 문제는 없었습니다. 현대의 개발자로서 표준 라이브러리에서 제공하는 자료 구조를 사용하는 것만으로도 대부분 우리가 작성하는 소프트웨어에는 충분합니다. Swift의 배열과 딕셔너리는 오래 갈 것입니다.

 

하지만... 제가 원하는 대로 소프트웨어를 작업하지 못하는 때도 있었습니다. 문제를 접근하는 방법을 이해 못하거나 충분히 빠른 솔루션을 만들지 이해하지 못해서였습니다.

 

이런 장애물에 부딪칠 때마다, 소프트웨어 개발자가 되기에 내가 똑똑하지 못하다고 느꼈습니다. 하지만 실제로는, 이러한 문제를 해결하기 위한 도구가 부족했던 것입니다. 자료구조와 알고리즘에 대한 더 나은 어휘로, 원하는 소프트웨어를 얼마든 작성할 수 있었을 것입니다.

주로 모르는 문제에 대한 제 첫시도는 가능한 모든 조합의 알고리즘을 무차별로 대입하는 것입니다. 때로는 잘 작동했지만, 보통은 잘 되지 않았습니다. 이런 단순한 솔루션은 계산하는 데 수일이 걸리고, 구현가능하지도 않습니다. (심지어 저는 Big-O 표기법에 대해 알지도 못했습니다!)

 

하지만 대부분의 경우 처음부터 답을 도출할 필요가 없습니다. 대부분의 문제들은 이미 다른 사람들에 의해 수많이 해결되었으며, 잘 알려진 솔루션도 있습니다. 그 비결은, 어떤 종류의 문제를 다루고 있는지 이해하는 것입니다. 그리고 그곳에서 알고리즘과 자료구조를 배운 것이 결실을 맺는 곳입니다. 문제를 어떻게 칭하는지 알게 된다면 답을 찾는 것은 쉽습니다.

 

그렇다면, iOS 개발자로서 자료구조와 알고리즘을 배우는 것이 필요할까요? 저는 아니라고 대답하겠습니다. 프로그래밍을 하면서 대부분의 문제 중 95%는 알고리즘과 자료구조 없이도 해결할 수 있을 것입니다. 하지만 어떤 시점에서는 단순히 무차별로 대입하는 것으로는 구현할 수 없는 문제에 막히게 될 것입니다. 이런 상황에서, 알고리즘과 자료구조 도구상자를 가지는 것이 좋습니다.

몇년 전, 저는 이런 지식의 격차를 메우고 싶었습니다. 많은 알고리즘 책을 구매하고, Swift에 이 알고리즘을 구현하기 시작했습니다. 왜냐하면 저는 가르치는 것이 가장 좋은 학습방법이라고 생각하기 때문에 제가 공부하는 것들에 설명을 달아서 Github 레포에 올리기로 마음먹었습니다. 그래서 Swift 알고리즘 클럽이 탄생하게 되었습니다. 수많은 사람들로부터 기여를 받게 되었습니다. 그리고 우리는 함께 100가지 알고리즘과 자료구조에 대한 설명이 있는 멋진 커뮤니티를 구축하게 되었습니다.

 

사이드 프로젝트로서 수많은 Pull 요청을 처리하기에는 너무 많아졌기 때문에 raywenderlich.com에 코드를 기부하였고, 이곳은 훌륭한 집이 되어주었습니다. 리포지토리의 새로운 관리자인 Kelvin과 Vincent는 오늘날 멋진 코드를 만드는 데 수고하여 주었습니다. 이제 이들은 이것들을 책으로 만들어서 훨씬 보기 좋게 만들었습니다.

 

만약 여러분의 알고리즘과 자료구조 지식을 올리는 데 관심이 있다면, 제대로 된 곳으로 오신 것입니다. 이 책을 끝냈다면 Github에서 The Swift Algorithm Club으로 와서 자료구조와 알고리즘의 장점을 더 많이 살펴보세요.

 

— Matthijs Hollemans

 


🔗 번역 시리즈 링크

0️⃣ 섹션 0. 시작하기전에

 

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 0. 시작하기 전에

요즘 알고리즘 공부를 하면서 Raywenderlich.com 에서 나온 Data Structures & Algorithms in Swift이 책을 보고 있습니다. https://www.raywenderlich.com/books/data-structures-algorithms-in-swift 저는 정..

kimdee.tistory.com

1️⃣ 섹션 1. 소개 Introduction

> 챕터 1.왜 자료구조와 알고리즘을 배워야할까요? / 챕터 2. 복잡도  Complexity

 

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 1. 소개 - 챕터1. 왜 자료구조와 알고리즘을

Raywenderlich.com 에서 나온 Data Structures & Algorithms in Swift 책의 데모 공개본을 번역하였습니다. 즐겁게 봐주세요. https://www.raywenderlich.com/books/data-structures-algorithms-in-swift 섹션..

kimdee.tistory.com

> 챕터3. 스위프트 표준 라이브러리 Swift Standard Library

 

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 1. 소개 - 챕터3. 스위프트 표준 라이브러리 S

Raywenderlich.com 에서 나온 Data Structures & Algorithms in Swift 책의 데모 공개본을 번역하였습니다. 즐겁게 봐주세요. https://www.raywenderlich.com/books/data-structures-algorithms-in-swift 섹션..

kimdee.tistory.com

 

1️⃣ 섹션 2. 기초 자료구조 Elementary Data Structure

> 챕터 4. 스택 Stacks /  챕터 5. 스택 도전과제 Stack Challenges

 

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 2. 기초 자료구조 - 챕터4~5. 스택, 스택 도전

Raywenderlich.com 에서 나온 Data Structures & Algorithms in Swift 책의 데모 공개본을 번역하였습니다. 즐겁게 봐주세요. https://www.raywenderlich.com/books/data-structures-algorithms-in-swift 섹션..

kimdee.tistory.com

> 챕터 6-1. 연결리스트 Linked List (연결리스트 정의, 요소 추가, 삭제)

 

 

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 2. 기초 자료구조 - 챕터6-1. 연결리스트 (정

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 2. 기초 자료구조 - 챕터6-1. 연결리스트 Raywenderlich.com 에서 나온 Data Structures & Algorithms in Swift 책의 데모 공개본을 번역하였습니다. 즐겁..

kimdee.tistory.com

> 챕터 6-2. 연결리스트 Linked List (스위프트 표준 라이브러리의 콜렉션 프로토콜, 카우 Copy-On-Write,  밸류 시맨틱)

 

 

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 2. 기초 자료구조 - 챕터6-2. 연결리스트

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 2. 기초 자료구조 - 챕터6-2. 연결리스트 (스위프트 콜렉션 프로토콜, 밸류 시맨틱, COW(카피-온-라이트)) Raywenderlich.com 에서 나온 Data Structures &..

kimdee.tistory.com

 

> 챕터 7. 연결리스트 도전과제 Linked List Challenges

 

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 2. 기초 자료구조 - 챕터7. 연결리스트 도전

[Swift][번역] 스위프트의 자료구조와 알고리즘 - 섹션 2. 기초 자료구조 - 챕터7. 연결리스트 도전과제 Raywenderlich.com 에서 나온 Data Structures & Algorithms in Swift 책의 데모 공개본을 번역하였습니다..

kimdee.tistory.com

 


마치며 

 

오늘도 읽어주셔서 감사합니다.

 

궁금한 점이 있다면 댓글로, 도움이 되셨다면 공감 부탁드립니다.

혹시 수정하거나 피드백하실  내용 있다면 언제든 댓글로 부탁드립니다.

 

감사합니다.

 

 

 

반응형

댓글