본문 바로가기

Programming/Swift

[Data Structures & Algorithms in Swift] Chapter 1: Why Learn Data Structures & Algorithms?

728x90

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

 

Data Structures & Algorithms in Swift

Understanding how data structures and algorithms work in code is crucial for creating efficient and scalable apps and acing job interviews. Swift’s standard library and, more recently, the Swift Collections and Algorithms packages contain a robust set of

www.kodeco.com

 

Chapter 1: Why Learn Data Structures & Algorithms?

Chapter 2: Complexity

Chapter 3: Swift Standard Library

Chapter 4: Stack Data Structure

Chapter 5: Stack Challenges

Chapter 6: Linked List


 

Data structure는 효율성에 관한 것이다. 데이터가 주어지면, 특정 목표를 달성하기 위해 이를 저장하는 가장 좋은 방법을 찾는다. 흔히, Array, Dictionary, Set 과 같은 Collection type을 사용한다. 각 자료구조(Data structure)에는 고유한 특성이 있다. 예를 들어 배열(Array)는 집합(Set)에 비해 요소 검색 시간이 훨씬 오래 걸리지만, 각 요소를 순서에 맞게 정렬할 수 있다. 자료 구조의 개념은 특정 언어에 한정되지 않는다. C의 자료구조와 Swift의 자료구조의 세부적인 구현은 다르지만, 구조와 개념은 동일하다. 알고리즘(Algorithm)은 작업을 완료하는 일련의 순서로, 그 예로는 정렬 알고리즘, 압축 알고리즘 등이 있다. 알고리즘은 소프트웨어에 필수적이며, 많은 프로그램에서 유용한 block 역할을 할 수 있도록 한다. 자료구조와 알고리즘을 배워야 하는 이유는 다음과 같다.

 

Interviews

대부분의 회사에서 엔지니어의 능력을 테스트하기 위해 하나 이상의 알고리즘 질문을 한다. 소프트웨어 엔지니어링은 자료 구조와 알고리즘에 대한 이해를 기반으로 한다.

 

Work

데이터가 많아지면, 적절한 자료 구조를 사용하는 것이 중요하다. 올바른 알고리즘을 사용하면, 소프트웨어의 성능과 확장성을 크게 향상 시킬 수 있다. 올바른 자료 구조를 사용하면, 다른 개발자에게 context를 제공하는 데 도움이 된다.

코드에서 Set을 사용한다면, 다음과 같은 내용을 추론할 수 있다.
  1. Set은 순서가 없는(unordered) Collection 이므로, 요소의 순서에 신경 쓸 필요 없다.
  2. Set은 요소의 값이 중복되지 않는다. 따라서 고유한(unique) 데이터만 사용해 작업한다.
  3. Set은 value membership을 확인하는 데 유용하므로, 이런 목적으로 Set을 사용했을 가능성이 높다.

다양한 자료 구조에 익숙해지면, 자료 구조를 사용해 코드에서 추가 context를 추출할 수도 있다. 이는 소프트웨어의 작동 방식을 이해하는 데 큰 도움을 준다.

 

Self-Improvement

까다로운 작업을 해결하기 위해 알고리즘에서 사용하는 전략을 알게 되면, 코드를 개선할 수 있는 아이디어를 얻을 수 있다. 스위프트 표준 라이브러리(Swift standart library)에는 작은 규모의 범용 collection type 들이 내장되어 있어, 복잡하고 특수한 추상화(abstraction) 구축을 위한 출발점으로 사용할 수 있다. 표준 Array, Dictionary 보다 더 많은 자료 구조를 알고 있다면, 개발에 사용할 수 있는 더 큰 collection tools를 가진 것이 된다.

알고리즘 연습은 음악가들이 음계를 연습하는 것과 유사하다. 기초가 다듬어 질수록 복잡한 소프트웨어를 더 잘 사용할 수 있다.
728x90