Stack and Queue
λ°°μ΄μμ μ‘°κΈ λ λ°μ ν ννμ μλ£κ΅¬μ‘°
Stack (μ€ν)
κ°λ
- LIFO(Last In First Out): νμ μ μΆ
- λμ€μ λ€μ΄μ¨ λ°μ΄ν°κ° λ¨Όμ λκ°λ ꡬ쑰
μ£Όμ μ°μ°
- push: λ°μ΄ν°λ₯Ό μ€νμ 맨 μμ μ½μ
- pop: μ€νμ 맨 μ λ°μ΄ν°λ₯Ό μ κ±°νκ³ λ°ν
- top: μ€νμ 맨 μ λ°μ΄ν°λ₯Ό νμΈ (μ κ±°νμ§ μμ)
λμ κ³Όμ
- λΉ μ€ν β push(μ κ°) β μ€νμ κ° μΆκ°
- λ°μ΄ν° μλ μ€ν β pop() β 맨 μ κ° μ κ±°
- top ν¬μΈν°κ° νμ μ€νμ μ΅μλ¨μ κ°λ¦¬ν΄
νμ©
- κΉμ΄ μ°μ νμ(DFS: Depth First Search)
- λ°±νΈλνΉ μ’ λ₯μ μ½λ© ν μ€νΈμ ν¨κ³Όμ
- LIFO(νμ μ μΆ) κ°λ μμ²΄κ° μ¬κ· ν¨μ μκ³ λ¦¬μ¦μ μ리μ μΌλ§₯μν΅
Queue (ν)
κ°λ
- FIFO(First In First Out): μ μ μ μΆ μλ£κ΅¬μ‘°
- μ€νκ³Ό λ¬λ¦¬ μμͺ½ λμμ μ½μ κ³Ό μμ κ° μ΄λ£¨μ΄μ§
νμ ꡬ쑰
[μ κ°] β [κ°] [κ°] [κ°] [κ°] [μ§μΈ κ°] β [pop]
β β
back front
(rear) (head)
μ£Όμ μ°μ°
- push: back λΆλΆμ μλ‘μ΄ λ°μ΄ν°λ₯Ό μ½μ νλ μ°μ°
- pop: frontμμ λ°μ΄ν°λ₯Ό μ κ±°νλ μ°μ°
- back: νμμ κ°μ₯ λ λ°μ΄ν°λ₯Ό κ°λ¦¬ν€λ μμ
- front: νμμ κ°μ₯ μμ λ°μ΄ν°λ₯Ό κ°λ¦¬ν€λ μμ
λμ μ리
- μ λ°μ΄ν° μΆκ°: back(rear) μμΉμ push
- λ°μ΄ν° μ κ±°: front(head) μμΉμμ pop
- λ¨Όμ λ€μ΄μ¨ λ°μ΄ν°κ° λ¨Όμ λκ°
ν κ΄λ ¨ μ©μ΄
- back = rear: νμ λ€μͺ½ (μ½μ μμΉ)
- front = head: νμ μμͺ½ (μμ μμΉ)
νμ© μμ
- νλ¦°ν° λκΈ°μ΄
- BFS(λλΉ μ°μ νμ)
- μμ μ€μΌμ€λ§
- λ²νΌλ§ μμ€ν
ν΅μ¬ μ°¨μ΄μ
| ꡬ쑰 | μ½μ /μμ μμΉ | λ°μ΄ν° μμ | μμ |
|---|---|---|---|
| μ€ν | νμͺ½ λ(top) | νμ μ μΆ | μ μ μκΈ° |
| ν | μμͺ½ λ | μ μ μ μΆ | λκΈ°μ€ |
μ°μ μμ ν (Priority Queue)
- λ€μ΄κ° μμμ μκ΄μμ΄ μ°μ μμκ° λμ λ°μ΄ν°κ° λ¨Όμ λμ€λ μλ£κ΅¬μ‘°
- μΌλ°μ μΌλ‘ ν(heap)μ μ΄μ©ν΄ ꡬν
μκ³ λ¦¬μ¦κ³Όμ μ°κ΄μ±
- μ€ν β DFS (κΉμ΄ μ°μ νμ)
- ν β BFS (λλΉ μ°μ νμ)