반응형
자료구조란?
자료구조(Data Structure)는 데이터를 저장, 관리, 접근하는 방식을 의미한다.
단순히 데이터를 모아놓는 것이 아니라, 효율적으로 데이터를 사용할 수 있도록 구조화하는 것이 핵심이다.
즉, 프로그램이 데이터를 빠르고 효율적으로 처리하도록 설계한 논리적·물리적 구조라고 이해하면 된다.
자료구조의 필요성
- 효율적인 데이터 관리
- 단순 배열처럼 무작정 데이터를 저장하면 검색, 삽입, 삭제에 시간이 많이 걸린다.
- 자료구조를 사용하면 필요한 작업을 최소한의 시간으로 수행할 수 있다.
- 알고리즘과의 연계
- 자료구조는 알고리즘과 함께 작동한다.
- 예: 정렬, 탐색, 최단 경로 계산 등 대부분 알고리즘이 자료구조에 의존한다.
- 데이터의 의미 표현
- 데이터 간의 관계, 순서, 계층 구조 등을 표현할 수 있다.
- 예: 트리, 그래프 등
자료구조의 분류
자료구조는 크게 두 가지 기준으로 나눌 수 있다.
선형 자료구조 (Linear Data Structure)
- 데이터가 순차적으로 나열되어 있는 구조
- 각 요소가 1:1로 연결되어 있어 앞뒤 관계가 명확하다
대표적인 선형 자료구조:
| 자료구조 | 특징 |
| 배열(Array) | 고정된 크기, 인덱스를 통한 직접 접근 가능 |
| 연결 리스트(Linked List) | 동적 크기, 삽입/삭제가 빠름 |
| 스택(Stack) | LIFO(Last In First Out), 후입선출 구조 |
| 큐(Queue) | FIFO(First In First Out), 선입선출 구조 |
비선형 자료구조 (Non-Linear Data Structure)
- 데이터 간 1:다 혹은 다:다 관계 존재
- 순차적 구조가 아니며, 계층적 또는 그래프 형태
대표적인 비선형 자료구조:
| 자료구조 | 특징 |
| 트리(Tree) | 계층 구조, 부모-자식 관계, 탐색/정렬에 유리 |
| 그래프(Graph) | 노드와 간선으로 표현, 복잡한 관계 표현 가능 |
자료구조 설계 시 고려사항
- 시간 복잡도
- 검색, 삽입, 삭제, 정렬 등의 연산 속도 중요
- 공간 복잡도
- 메모리 사용량 고려
- 데이터의 특성
- 삽입/삭제가 빈번한가, 검색이 자주 필요한가 등
- 응용 목적
- 프로그램 요구사항에 맞는 자료구조 선택이 핵심
결론
자료구조는 단순히 데이터를 저장하는 것이 아니라, 효율적인 처리와 관리, 데이터 관계 표현을 위해 존재한다.
선형 자료구조는 순차적 데이터를, 비선형 자료구조는 계층적/복잡한 관계 데이터를 처리할 때 유리하다.
즉, 알고리즘을 효율적으로 구현하고, 프로그램 성능을 높이는 핵심 기반이 바로 자료구조다.
반응형
'DEVELOPMENT > Algorithm' 카테고리의 다른 글
| 그래프(Graph) (0) | 2019.02.07 |
|---|---|
| 정렬(Sorting)의 비교 (0) | 2019.02.07 |
| 큐(Queue) (0) | 2019.02.07 |
| 스택(Stack) (0) | 2019.02.07 |
| 연결리스트(Linked List) (0) | 2019.02.07 |