자료구조란?
자료구조는 데이터를 효율적으로 저장하고 관리하기 위한 구조입니다. 컴퓨터는 방대한 양의 데이터를 다루기 때문에 효율적인 자료구조를 사용하는 것이 중요합니다. 적절한 자료구조를 선택하면 데이터 검색, 삽입, 삭제 등의 작업 속도를 향상시키고 메모리 사용량을 줄일 수 있습니다.
자료구조는 프로그래밍의 기초이자 핵심입니다. 효율적인 자료구조를 사용하면 프로그램의 성능을 크게 향상시킬 수 있습니다. 예를 들어, 데이터 검색이 빈번한 프로그램에서 배열 대신 해시 테이블을 사용하면 검색 속도를 획기적으로 높일 수 있습니다.
또한, 자료구조에 대한 이해는 알고리즘 학습에도 도움이 됩니다.
선형 자료구조 (Linear Data Structure)
1. 배열 (Array)
- 개념: 같은 종류의 데이터를 연속된 메모리 공간에 저장하는 자료구조입니다.
- 장점: 인덱스를 사용하여 빠르게 데이터에 접근할 수 있습니다.
- 단점: 크기가 고정되어 있어 삽입이나 삭제가 비효율적입니다.
- 활용: 데이터베이스, 이미지 처리 등
2. 연결 리스트 (Linked List)
- 개념: 각 데이터 요소가 다음 요소의 주소를 저장하는 방식으로 연결된 자료구조입니다.
- 장점: 삽입이나 삭제가 용이합니다.
- 단점: 특정 요소에 접근하려면 처음부터 순차적으로 탐색해야 합니다.
- 활용: 동적 메모리 할당, 스택, 큐 구현 등
3. 스택 (Stack)
- 개념: LIFO (Last In First Out) 방식으로 데이터를 관리하는 자료구조입니다.
- 장점: 함수 호출, 실행 취소 기능 구현에 유용합니다.
- 단점: 데이터 접근이 제한적입니다.
- 활용: 웹 브라우저 방문 기록, 실행 취소 기능 등
4. 큐 (Queue)
- 개념: FIFO (First In First Out) 방식으로 데이터를 관리하는 자료구조입니다.
- 장점: 대기열, 작업 스케줄링에 활용됩니다.
- 단점: 데이터 접근이 제한적입니다.
- 활용: 프린터 대기열, 운영체제 스케줄링 등
비선형 자료구조 (Non-Linear Data Structure)
1. 트리 (Tree)
- 개념: 계층적인 관계를 표현하는 자료구조입니다.
- 장점: 데이터 검색, 정렬에 효율적입니다.
- 단점: 구현이 복잡할 수 있습니다.
- 활용: 파일 시스템, 검색 엔진 등
2. 그래프 (Graph)
- 개념: 객체 간의 관계를 표현하는 자료구조입니다.
- 장점: 다양한 관계 표현에 유용합니다.
- 단점: 구현이 복잡할 수 있습니다.
- 활용: 소셜 네트워크, 지도 등
3. 해시 테이블 (Hash Table)
- 개념: 키-값 쌍으로 데이터를 저장하는 자료구조입니다.
- 장점: 빠른 데이터 검색이 가능합니다.
- 단점: 해시 충돌 문제를 해결해야 합니다.
- 활용: 데이터베이스, 캐싱 시스템 등
기타 자료구조
1. 힙 (Heap)
- 개념: 완전 이진 트리 형태의 자료구조로, 부모 노드의 값이 자식 노드의 값보다 항상 크거나 작은 특징을 가집니다. (최대 힙, 최소 힙)
- 장점: 우선순위 큐 구현에 효율적입니다. 최대/최소값을 빠르게 찾을 수 있습니다.
- 단점: 정렬된 상태를 유지해야 하므로 삽입/삭제 연산에 시간이 소요됩니다.
- 활용: 우선순위 큐, 힙 정렬, Dijkstra 알고리즘 등
2. Trie (트라이)
- 개념: 문자열을 저장하고 효율적으로 검색하기 위한 트리 형태의 자료구조입니다.
- 장점: 문자열 검색, 자동 완성 기능 구현에 효과적입니다.
- 단점: 메모리 사용량이 많을 수 있습니다.
- 활용: 사전 검색, 자동 완성, IP 라우팅 등
자료구조 선택시 고려할 사항
- 데이터의 특성 (종류, 크기, 삽입/삭제 빈도 등)
- 사용 목적 (검색, 정렬, 삽입/삭제 등)
- 시간 복잡도 (각 작업에 대한 시간 복잡도)
- 공간 복잡도 (메모리 사용량)
Reference
https://bnzn2426.tistory.com/115