자료구조
자료구조 (Data Structures)
자료구조는 데이터를 효율적으로 저장하고 관리하기 위한 방식이나 구조를 의미합니다. 다양한 자료구조는 특정 작업이나 알고리즘에 적합한 성능을 제공하기 위해 고안되었습니다. 아래는 주요 자료구조와 그 특징에 대한 설명입니다.
1. 배열 (Array)
- 정의: 동일한 데이터 타입의 요소들이 연속적으로 나열된 자료구조.
- 특징:
- 고정된 크기를 가짐.
- 인덱스를 사용하여 O(1) 시간에 접근 가능.
- 크기 변경이 어렵고, 삽입 및 삭제가 비효율적.
2. 연결 리스트 (Linked List)
- 정의: 각 요소가 데이터와 다음 요소를 가리키는 포인터를 포함하는 노드로 이루어진 자료구조.
- 특징:
- 동적 크기를 가짐.
- 삽입 및 삭제가 용이 (O(1)).
- 접근 속도가 느림 (O(n)).
3. 스택 (Stack)
- 정의: LIFO(Last In First Out) 원칙에 따라 동작하는 자료구조.
- 특징:
- 삽입(push) 및 삭제(pop) 연산이 O(1).
- 주로 함수 호출의 관리 등에 사용.
4. 큐 (Queue)
- 정의: FIFO(First In First Out) 원칙에 따라 동작하는 자료구조.
- 특징:
- 삽입(enqueue) 및 삭제(dequeue) 연산이 O(1).
- 주로 프로세스 관리, 작업 스케줄링 등에 사용.
5. 트리 (Tree)
- 정의: 계층적인 구조를 가진 자료구조로, 노드와 노드 간의 부모-자식 관계로 구성.
- 특징:
- 루트 노드에서 시작하여 자식 노드로 확장.
- 이진 트리, AVL 트리, 이진 탐색 트리(BST) 등 다양한 종류가 있음.
- 특정 연산(탐색, 삽입, 삭제)의 평균 시간 복잡도는 O(log n).
6. 그래프 (Graph)
- 정의: 노드(정점)와 노드 간의 연결(간선)로 구성된 자료구조.
- 특징:
- 방향 그래프(Directed Graph)와 무방향 그래프(Undirected Graph)가 있음.
- 연결 리스트 또는 행렬을 사용하여 구현.
- 다양한 알고리즘(DFS, BFS, 다익스트라 등)에서 사용.
7. 해시 테이블 (Hash Table)
- 정의: 키를 값에 매핑하기 위해 해시 함수를 사용하는 자료구조.
- 특징:
- 평균적으로 O(1) 시간 복잡도로 검색, 삽입, 삭제 가능.
- 해시 충돌 문제를 해결하기 위한 여러 방법(체이닝, 개방 주소법 등)이 존재.
자료구조의 선택
자료구조의 선택은 주어진 문제의 특성과 요구사항에 따라 달라집니다. 예를 들어, 빠른 검색이 필요한 경우 해시 테이블이 적합할 수 있으며, 데이터의 순차적 접근이 빈번하다면 배열이나 리스트가 더 나을 수 있습니다. 각 자료구조의 장단점을 이해하고 상황에 맞게 적절히 선택하는 것이 중요합니다.
다음시간에 계속…
This post is licensed under CC BY 4.0 by the author.