Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

mooni

[자료구조] 복잡도 본문

Coding Test

[자료구조] 복잡도

mooni_ 2025. 5. 26. 13:53

자료구조란?

자료구조(Data Structure)는 데이터를 효율적으로 저장, 수정, 삭제, 탐색할 수 있도록 도와주는 데이터의 집합 및 구조입니다. 알고리즘과 함께 사용되며, 문제를 해결하는 기반이 됩니다.

 


복잡도란?

복잡도는 알고리즘이나 자료구조가 사용하는 시간(연산량)공간(메모리)을 측정하는 기준입니다.

 

1. 시간 복잡도(Time Complexity)

  • 입력 크기(n)에 따라 알고리즘이 실행되는 데 걸리는 시간

 

2. 공간 복잡도(Space Complexity)

  • 알고리즘이 실행될 때 필요로 하는 메모리 양
int a[1004]; // 1004개의 int  1004 * 4 byte = 4016 byte

 

빅오(Big-O) 표기법

  • 가장 영향력이 큰 항만을 남기고 상수와 하위 항을 제거한 표현법
O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2^n) < O(n!)

 


자료구조에서의 평균 시간복잡도

자료구조 접근 탐색 삽입 삭제
배열(array) O(1) O(n) O(n) O(n)
스택(stack) O(n) O(n) O(1) O(1)
큐(queue) O(n) O(n) O(1) O(1)
이중 연결 리스트(doubly linked list) O(n) O(n) O(1) O(1)
해시 테이블(hash table) O(1) O(1) O(1) O(1)
이진 탐색 트리(BST) O(logn) O(logn) O(logn) O(logn)
AVL 트리 O(logn) O(logn) O(logn) O(logn)
레드 블랙 트리 O(logn) O(logn) O(logn) O(logn)

 

 

자료구조에서의 최악 시간복잡도

자료구조 접근 탐색 삽입 삭제
배열(array) O(1) O(n) O(n) O(n)
스택(stack) O(n) O(n) O(1) O(1)
큐(queue) O(n) O(n) O(1) O(1)
이중 연결 리스트(doubly linked list) O(n) O(n) O(n) O(n)
해시 테이블(hash table) O(n) O(n) O(n) O(n)
이진 탐색 트리(BST) O(logn) O(logn) O(logn) O(logn)
AVL 트리 O(logn) O(logn) O(logn) O(logn)
레드 블랙 트리 O(logn) O(logn) O(logn) O(logn)
✅ BST는 불균형하게 구성될 경우 O(n)이 될 수 있으므로 균형 잡힌 트리 구조(AVL, Red-Black)를 사용하는 것이 중요합니다.

마무리

복잡도 분석은 알고리즘의 효율성과 실행 가능성 판단의 기준이 됩니다. 적절한 자료구조 선택과 복잡도 고려는 프로그램 성능을 극대화하는 핵심 요소입니다.

'Coding Test' 카테고리의 다른 글

[자료구조] 비선형 자료 구조  (0) 2025.05.26
[자료구조] 선형 자료 구조  (1) 2025.05.26
[JavaScript] 광물 캐기  (1) 2025.05.26
[JavaScript] 과제 진행하기  (0) 2025.05.26
[JavaScript] 두 원 사이의 정수 쌍  (0) 2025.05.19