1. What is Data Structure?
Data Structure(자료 구조)란?
- 자료 구조란 데이터에 편리하게 접근하고 조작하기 위한 데이터를 저장하거나 조직하는 방법입니다.
- 자료 구조의 종류에는 여러가지가 있습니다. 하지만 모든 목적에 부합하는 자료구조는 없습니다. 따라서 각각의 자료구조가 갖는 장점과 한계를 잘 이해하고 상황에 맞게 올바른 자료 구조를 선택하고 사용하는 것이 중요합니다.
- 자료구조는 언어별로(ex. JavaScript, Python...) 지원하는 양상이 다릅니다.
- 각 언어가 가진 자료구조의 종류와 그것에 대한 사용 방법을 익히는 것이 중요하지만, 무엇보다 각 자료구조의 본질과 컨셉을 이해하고 상황에 맞는 적절한 자료 구조를 선택하는 것이 중요합니다.
- 언어별로 지원하는 자료구조의 양상이 다르더라도 개념을 올바르게 이해한다면 해당 언어에 맞추어서 사용하기만 하면 됩니다.
2. Why Data Structure?
- 자료구조가 무엇인지 좀 더 쉽게 이해하기 위해 일상에서 찾아볼 수 있는 예시를 들어보겠습니다.
- 여성분들이 화장품을 담기에 효율적인 것은? 캐리어? 백팩? 에코백? 파우치?
- 정답은 파우치 입니다! (물론 엄청나게 많이 들고 다니려면 더 큰 가방이 필요하겠지만.. 일반적으로!)
화장품 몇 개 담으려고 캐리어를 갖고 다닌다면 무겁고 짜증나고 생각만해도 정말 비효율적이네요🤬
- 그렇다면 캐리어는 언제 사용하는게 좋을까요? 해외 여행 가는 경우처럼 많은 양의 짐을 한번에 이동 시켜야 하는 경우에 가장 효율적인 가방이 캐리어 입니다.
- 이처럼 자료구조란, 상황과 문맥에 맞게 데이터를 담을 수 있는 적절한 구조를 말합니다.
- 화장품을 담기 위해 캐리어를 사용하는 것은 큰 수고를 불러오는 것 처럼,
- 데이터에 맞는 적절한 자료 구조를 사용하는 것은 전체 개발 시스템에 굉장히 큰 영향을 끼칩니다.
*"코딩은 알고리즘과 자료구조, 이 두가지로 이루어진다"
3. 자료 구조의 분류
- Primitive Data Structure(단순 구조)
: 프로그래밍에서 사용되는 기본 데이터 타입
- None-Primitive Data Structure(비단순 구조)
: 단순한 데이터를 저장하는 구조가 아니라 여러 데이터를 목적에 맞게 효과적으로 저장하는 자료 구조
- Linear Data Structure(선형 구조)
: 저장되는 자료의 전후 관계가 1:1 (ex. List, Stacks, Queues)
- Non-Linear Data Structure(비선형 구조)
: 데이터 항목 사이의 관계가 1:n 또는 n:m (ex. Graphs, Trees )
4. 일반적으로 가장 자주 사용 되는 자료 구조
- Array(Python에서는 List)
- Tuple
- Set
- Dictionary
- Stack & Queue
- Tree