자료구조란(data structure)
자료(data) + 구조(structure)을 합친 의미라고 생각하시면 됩니다.
수많은 자료들을 어떤 구조, 형태로 만들어야 효율적인지 따지는 것입니다.
예를 들어, 책이 100권이 있다고 가정을 합니다.
그럼 책(책의 방향)을 가로로 쌓는게 좋을까요? 아니면 세로로 쌓는게 좋을까요?
당연히 세로로 쌓는다고 여러분들도 흔히 생각하실 것입니다.
그 이유는 간단하죠. 가로로 쌓게 된다면 맨 아래에 있는 책을 꺼내기가 힘들기 때문이죠.
이를 자료구조와 비교를 해보게 된다면, 자료는 책이 될 것이고, 구조는 세로가 될 것입니다.
자료구조가 중요한 이유가 있습니다.
책을 예시로 들었죠?
만약, 책을 사용하는 장소가 도서관이나 서점이라면 세로로 책을 정리하는 것이 더욱 효율적이 될 것입니다.
도서관이나 서점같은 경우는 책의 이동이 많고, 책을 관리하기 편할수록 효율적일 것이기 때문이죠.
만약 책이 100권이 아니라 100만권이라면 자료구조에 대해서 더욱 예민해질 수 밖에 없겠죠.
이에 대해서 공간복잡도와 시간복잡도를 따지면 됩니다.
공간복잡도
- 데이터 관리에 필요한 공간
- 데이터 양의 변화에 따른 공간의 변화
- 예상 소요 공간 측정
시간복잡도
- 데이터 처리에 소요되는 시간
- 데이터 양의 변화에 따른 소요 시간의 변화
- 예상 처리 시간을 측정
- 지연 장애 발생시, 발생 원인을 찾을 수 있는 근거
자료구조 분류
자료구조는 선형구조와 비선형 구조로 나눌수 있습니다.
선형구조는 데이터가 일렬로 나열된 구조를 가진 것이고, 비선형 구조는 데이터가 일렬이 아닌 특정한 형태를 가진 것을 의미합니다.
선형구조
- 배열(Array)
- 리스트(List)
- 스택(Stack)
- 큐(Queue)
비선형 구조
- 트리(Tree)
- 그래프(Greaph)
'알고리즘&문제' 카테고리의 다른 글
[알고리즘] 입력 속도 비교 ( Python3, Pypy3) - input() vs sys.stdin.readline() (0) | 2022.08.18 |
---|---|
[알고리즘] Unpacking, List Comprehension, Dictionary 잘 쓰기, Sorting, Combination/Permutation, for, while문 에서의 else, Enumerate, Counter (0) | 2022.08.17 |
[알고리즘] 자료구조 시각화 사이트 (0) | 2022.04.23 |
[백준] 백준 문제 풀기 환경 설정 & replit 사용 (0) | 2022.04.10 |