자료구조
메모리를 효율적으로 사용하며 빠르고 안정적으로 데이터를 처리하는 것이 궁극적인 목표로 상황에 따라 유용하게 사용될 수 있도록 특정 구조를 이루고 있다.
전산화
현실에 존재하는 영화 예매를 어떻게 컴퓨터로 옮길 것인가?
무엇을 고려해야 하는가?
현실에서 수행되는 프로세스는?
- 고객은 어떤 영화를 볼지 고른다.
- 고객은 영화를 예매하기 위해 줄을 선다
- 고객은 차례가 왔을 때 좌석을 선택한다.
- 고객은 최종적으로 돈을 지불한다.
소프트웨어에서 어떻게 처리할 것인가?
- 영화를 검색한다. -> Trie(트리)
- 고객이 많을 경우 줄을 서야한다. -> Queue(큐)
- 고객은 좌석을 선택할 수 있어야한다. -> HashTable(해시테이블)
결국 자료구조는 일차원인 컴퓨터 메모리를 현실에 대응되도록 구조를 만든 것이라 할 수 있습니다!
자료구조의 종류
단순 구조
특별하게 매울 내용은 아닙니다
선형 구조
배열, 연결 리스트, 스택, 큐
비선형 구조
트리, 그래프
선형 구조
한 원소 뒤에 하나의 원소 만이 존재하는 형태로 자료들이 선형으로 나열되어 있는 구조를 가집니다.
배열, 연결 리스트, 스택, 큐 등이 있습니다.
비선형 구조
원소 간 다대다 관계를 가지는 구조로 계층적 구조나 망형 구조를 표현하기에 적절합니다.
트리와 그래프 등이 있습니다.
완벽한 자료구조는 없다
더 좋고 더 나쁜 자료구조는 없습니다
특정 상황에서 유용한 자료구조와 덜 유용한 자료구조가 존재할 뿐입니다.
우리는 상황에 맞게 적절한 자료구조를 선택하면 됩니다.
마무리
배열, 연결 리스트, 스택, 큐, 그래프, 트리 등 안 들어본 자료구조가 없습니다.
하지만 제대로 이해하거나 설명할 수 있는 것이 없는데
이번에 알고리즘 공부를 하는 계기로 해당 자료구조 들을 꼭 제대로 이해하고
타인에게 설명할 수 있는 정도가 코딩에 활용하는 되도록 공부 해보겠습니다.