λ€μ΄κ°λ©°
νλ‘κ·Έλλ° μ΄μ°½κΈ°μλ μκ°λ μ€μνμ§λ§, 곡κ°λ λ§€μ° μ€μνμ΅λλ€. μ§κΈμ²λΌ κ³ μ¬μ λ©λͺ¨λ¦¬μ νλλμ€ν¬λ₯Ό μ λ ΄ν κ°κ²©μ μ΄ μ μμκΈ° λλ¬Έμ΄μ£ . κ·ΈλΉμμλ μ©λμ΄ μΆ©λΆν λ©λͺ¨λ¦¬λ μμμ΅λλ€. λ°λΌμ λ³μμ ν¨μλ₯Ό μ μΈνκ±°λ μ¬μ©ν λλ λΆνμν λΆλΆμ λ§λ€μ§ μμμΌλ©° νλ‘κ·Έλ¨ μ€ννμΌμ μ©λλ μ€μνμ£ . μ»΄ν¨ν°κ° λ°μ νλ©΄μ μ§κΈμ 곡κ°μ λν μ μ½μ κ±°μ μλ€κ³ ν΄λ 무방ν©λλ€. κ·Έλ¬λ λμ± μκ°μ λν μ€μλκ° μ¬λΌκ°κΈ°λ νμ£ . μκ°λ³΅μ‘λλ λΉ μ€(Big-O)λΌλ ννλ°©μμ λλΆλΆ μ¬μ©ν©λλ€. μ΄λ€ μκ³ λ¦¬μ¦μ΄ μ€νλλλ° κ°μ₯ μ΅μ μ μ‘°κ±΄μΈ μνλ‘ μΌλ§λ 걸리λλ₯Ό νλ¨νλ μ§νμ λλ€. μ£Όλ‘ μ¬μ©νλ μλ£κ΅¬μ‘°μ λν μκ°λ³΅μ‘λλ₯Ό μμλ³΄κ² μ΅λλ€.
λ€μμ μ£Όμ μλ£κ΅¬μ‘°μ μ°μ°λ³ μκ°λ³΅μ‘λμ λλ€.
λ°°μ΄ (Array)
νκ· | μ΅μ | |
μ κ·Ό (Access) | O(1) | O(1) |
νμ (Search) | O(n) | O(n) |
μ½μ (Insert) | O(n) | O(n) |
μμ (Delete) | O(n) | O(n) |
- λ°°μ΄μ μΈλ±μ€λ₯Ό μ΄μ©ν μ κ·Όμ΄ O(1) λ‘ λΉ λ¦.
- μ€κ° μ½μ /μμ μ μμλ€μ μ΄λν΄μΌ νλ―λ‘ O(n).
μ°κ²° 리μ€νΈ (Linked List)
νκ· | μ΅μ | |
μ κ·Ό (Access) | O(n) | O(n) |
νμ (Search) | O(n) | O(n) |
μ½μ (Insert) | O(1) | O(1) |
μμ (Delete) | O(1) | O(1) |
- λ¨μΌ μ°κ²° 리μ€νΈλ νΉμ λ Έλμ λν μ κ·Όμ΄ O(n) (μμ°¨ νμ νμ).
- κ·Έλ¬λ μ²μ(head)μ΄λ λ(tail)μμ μ½μ /μμ λ O(1).
ν΄μ ν μ΄λΈ (Hash Table)
νκ· | μ΅μ | |
μ κ·Ό (Access) | - | O(n) |
νμ (Search) | O(1) | O(n) |
μ½μ (Insert) | O(1) | O(n) |
μμ (Delete) | O(1) | O(n) |
- ν΄μ μΆ©λμ΄ λ°μνλ©΄ O(n) (λͺ¨λ νλͺ©μ΄ κ°μ λ²ν·μ ν λΉλ κ²½μ°).
- μ μ ν ν΄μ±κ³Ό μΆ©λ ν΄κ²° κΈ°λ²(체μ΄λ, κ°λ°© μ£Όμλ² λ±)μ μ¬μ©νλ©΄ νκ· μ μΌλ‘ O(1).
μ΄μ§ νμ νΈλ¦¬ (Binary Search Tree, BST)
νκ· | μ΅μ | |
μ κ·Ό (Access) | O(log n) | O(n) |
νμ (Search) | O(log n) | O(n) |
μ½μ (Insert) | O(log n) | O(n) |
μμ (Delete) | O(log n) | O(n) |
- νΈλ¦¬κ° κ· νμ μ΄λ£¨λ©΄ O(log n).
- νμͺ½μΌλ‘ μΉμ°μΉ κ²½μ°(νΈν₯ νΈλ¦¬) O(n).
β κ· ν μ΄μ§ νμ νΈλ¦¬ (AVL, Red-Black Tree) → O(log n) 보μ₯.
ν (Heap)
νκ· | μ΅μ | |
μ κ·Ό (Access) | O(1) | O(1) |
μ½μ (Insert) | O(log n) | O(log n) |
μμ (Delete) | O(log n) | O(log n) |
- μ΅μ/μ΅λ νμμ μ΅μκ°/μ΅λκ° μ κ·Όμ O(1).
- μ½μ
/μμ μ ν μμ±μ μ μ§ν΄μΌ νλ―λ‘ O(log n).
μ€ν (Stack)
νκ· | μ΅μ | |
μ κ·Ό (Access) | O(n) | O(n) |
νμ (Search) | O(n) | O(n) |
μ½μ (Push) | O(1) | O(1) |
μμ (Pop) | O(1) | O(1) |
- LIFO (Last In, First Out) ꡬ쑰.
- μ½μ /μμ λ topμμλ§ μνλλ―λ‘ O(1).
- μμ μ κ·Όμ΄λ νμμ μ ν νμμ΄ νμνλ―λ‘ O(n).
ν (Queue)
νκ· | μ΅μ | |
μ κ·Ό (Access) | O(n) | O(n) |
νμ (Search) | O(n) | O(n) |
μ½μ (Enqueue) | O(1) | O(1) |
μμ (Dequeue) | O(1) | O(1) |
- FIFO (First In, First Out) ꡬ쑰.
- μ½μ (Enqueue)κ³Ό μμ (Dequeue)λ O(1).
- νμ λ° μμ μ κ·Όμ O(n).
μ°μ μμ ν (Priority Queue)
νκ· | μ΅μ | |
μ κ·Ό (Access) | O(1) | O(1) |
μ½μ (Enqueue) | O(log n) | O(log n) |
μμ (Dequeue) | O(log n) | O(log n) |
- μ°μ μμκ° λμ μμκ° λ¨Όμ λκ°λ Heap κΈ°λ° ν.
- ν(Heap)μΌλ‘ ꡬννλ©΄ μ½μ /μμ O(log n).
- μ΅λκ°/μ΅μκ° μ‘°νλ O(1).
λ± (Deque, Double-Ended Queue)
νκ· | μ΅μ | |
μ κ·Ό (Access) | O(n) | O(n) |
νμ (Search) | O(n) | O(n) |
μμͺ½ μ½μ (Push front) | O(1) | O(1) |
λ€μͺ½ μ½μ (Push back) | O(1) | O(1) |
μμͺ½ μμ (Pop front) | O(1) | O(1) |
λ€μͺ½ μμ (Pop back) | O(1) | O(1) |
- μμͺ½μμ μ½μ /μμ κ°λ₯.
- std::deque μ¬μ© μ O(1) 보μ₯.
κ·Έλν (Graph)
μΈμ νλ ¬ (Adjacency Matrix) | μΈμ 리μ€νΈ (Adjacency List) | |
μ μ₯ κ³΅κ° | O(V²) | O(V + E) |
κ°μ νμΈ (Check Edge) | O(1) | O(degree) |
μΈμ λ Έλ νμ | O(V) | O(degree) |
- V: μ μ κ°μ, E: κ°μ κ°μ.
- νμ μκ³ λ¦¬μ¦:
- BFS, DFS: O(V + E)
- λ€μ΅μ€νΈλΌ: O((V + E) log V) (μ°μ μμ ν μ¬μ©)
μ 리
- λΉ λ₯Έ μ κ·Ό: λ°°μ΄ O(1), ν΄μ ν μ΄λΈ O(1)
- λΉ λ₯Έ μ½μ /μμ : μ°κ²° 리μ€νΈ O(1), ν΄μ ν μ΄λΈ O(1)
- μ λ ¬λ λ°μ΄ν° νμ: μ΄μ§ νμ νΈλ¦¬ O(log n)
- μ΅μκ°/μ΅λκ° μ μ§: ν O(log n)
- λ¬Έμμ΄ κ²μ: νΈλΌμ΄ O(m)
- κ·Έλν νμ: DFS/BFS O(V + E)
'μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[κ·Έλν νμ] κΉμ΄ μ°μ νμ(Depth First Search, DFS) (0) | 2025.02.12 |
---|---|
νλ Έμ΄μ ν μ΄ν΄νκΈ° (0) | 2022.02.18 |
λκΈ