<aside>
π‘
[BFS vs DFS]
- BFS (Breadth-First Search, λλΉ μ°μ νμ)
- 루νΈ(μμμ )μμ κ°κΉμ΄ λ
Έλ(λ 벨 μμ)λΆν° νμ
- μ¦, ν "μΈ΅"μ λͺ¨λ λ
Έλλ₯Ό λ°©λ¬Έν λ€ λ€μ μΈ΅μΌλ‘ λμ΄κ°
- ν(Queue) μλ£κ΅¬μ‘° μ¬μ©
- DFS (Depth-First Search, κΉμ΄ μ°μ νμ)
- 루νΈμμ ν κ²½λ‘λ₯Ό λκΉμ§ λ°λΌκ° λ€, λ μ΄μ λͺ» κ°λ©΄ λλμμμ λ€λ₯Έ κ²½λ‘ νμ
- μ¦, βκΉκ²β λ€μ΄κ°λ€κ° λ€μ μ¬λΌμ΄ (λ°±νΈλνΉ)
- μ€ν(Stack) λλ μ¬κ·(Recursion) μ¬μ©

https://seanperfecto.github.io/BFS-DFS-Pathfinder/
</aside>
ν (Queue)
: λ¨Όμ λ€μ΄μ¨ λ°μ΄ν°κ° λ¨Όμ λκ°λ μ ν μλ£κ΅¬μ‘°(μλ£ κ°μ κ΄κ³κ° 1:1μ κ΄κ³λ₯Ό κ°μ§.)
-
μ€νκ³Ό λ§μ°¬κ°μ§ μ½μ
κ³Ό μμ μ μμΉκ° μ νμ μΈ μλ£κ΅¬μ‘°λ‘ νμ λ€μμ μ½μ
λ§ νκ³ , μμμλ μμ λ§ μ΄λ£¨μ΄μ§λ ꡬ쑰
-
μ μ
μ μΆ (FIFO, First In First Out)
- κ°μ₯ λ¨Όμ λ£μ μλ£κ° κ°μ₯ λ¨Όμ λμ€λ κ²
-
νμ ꡬ쑰

- front
- λ°μ΄ν°κ° λκ°λ **'창ꡬ'**μ μμΉλ₯Ό κ°λ¦¬ν΄
- νμ 맨 μ μμΉλ₯Ό κ°λ¦¬ν€λ μΈλ±μ€
- μμ (dequeue) μ°μ°μ΄ μΌμ΄λλ μμΉ
dequeueκ° μΌμ΄λλ©΄ frontλ λ€μ λ°μ΄ν°λ‘ μ΄λ
- rear
- μ€μ κ°μ₯ λ€μ μλ **'λ§μ§λ§ λκΈ°μ'**μ μμΉλ₯Ό κ°λ¦¬ν΄
- νμ 맨 λ€ μμΉλ₯Ό κ°λ¦¬ν€λ μΈλ±μ€
- μ½μ
(enqueue) μ°μ°μ΄ μΌμ΄λλ μμΉ
enqueueκ° μΌμ΄λλ©΄ rearλ κ·Έ λ°μ΄ν°λ₯Ό κ°λ¦¬ν€λλ‘ μ΄λ
-
νμ κΈ°λ³Έ μ°μ°
- μ½μ
:
enqueue
- μμ :
dequeue

-
νμ μ°μ° κ³Όμ

β front = rear = -1 (κ°μΌλ©΄) λΉμλ€λ κ²μ
νλ λ£μΌλ©΄ rearλ +1 μ΄ λ¨

β νλ λΉΌλ©΄ frontλ +1 μ΄ λ¨


β rearμ frontκ° κ°μμ§.
-
곡백 Queue μμ±
- κ³ μ λ°°μ΄μμ Queueμ μ¬μ΄μ¦λ₯Ό μ§μ
- frontμ rearμ κ°μ
-1λ‘ μ΄κΈ°ν
- μ΄λ νμ΄μ¬μμ μμ μΈλ±μ€ μ μ
-
μμ A μ½μ
μ½μ
κ³Όμ μ rearμ μ¦κ°
- front β
-1
- rear β
0 (+1)
-
μμ B μ½μ
μ½μ
κ³Όμ μ rearμ μ¦κ°
- front β
-1
- rear β
1 (+1)
-
μμ λ°ν/μμ
μμ κ³Όμ μ frontμ μ¦κ°
- front β
0 (+1)
- μ΄λ ν΄λΉ μ리μ μμλ μμ λ°ν
- rear β
1
-
μμ C μ½μ
- front β
0
- rear β
2 (+1)
-
μμ λ°ν/μμ
- front β
1 (+1)
- rear β
2
-
μμ λ°ν/μμ
- front β
2 (+1)
- rear β
2
- frontμ rearκ° κ°μμ§λ€? β
곡백 μν
1. μ ν ν
: λ°μ΄ν°λ₯Ό μΌλ ¬λ‘ μ μ₯νλ©°, μμμ κΊΌλ΄κ³ λ€μ λ£λ κΈ°λ³Έ ν ꡬ쑰
-
ꡬν β .append() , .pop() , front , rear
- λ°°μ΄μ΄λ μ°κ²°ν 리μ€νΈλ‘ ꡬνν μ μμ
- νμ ν¬κΈ°λ λ°°μ΄μ ν¬κΈ°μ κ°μ
- front : κ°μ₯ μ΅κ·Όμ μμ λ μμμ μΈλ±μ€μ
- rear : λ§μ§λ§μΌλ‘ μ μ₯λ μμμ μΈλ±μ€μ
-
μν νν
- μ΄κΈ° μν: front = rear = -1
- 곡백 μν: front == rear
- ν¬ν μν: rear == n-1 (n: λ°°μ΄μ ν¬κΈ°, n-1: λ°°μ΄μ λ§μ§λ§ μΈλ±μ€)
-
ꡬν νλ‘μΈμ€
β μ΄κΈ° 곡백 ν μμ± : create_queue()
- ν¬κΈ° nμΈ 1μ°¨μ λ°°μ΄ μμ±
- frontμ rearλ₯Ό -1λ‘ μ΄κΈ°ν
# create_queue()μ ν΄λΉ
q = [0] * n
front = -1
rear = -1
β‘ μ½μ
: enqueue(item)
β’ μμ : dequeue()
⣠곡백μν λ° ν¬νμν κ²μ¬ : is_empty(), is_full()
β€ κ²μ : qpeek()
μ νν ꡬν
- append, pop μλ λ²μ μΌλ‘ ꡬνν΄λ΄
2. μν ν
<aside>
π‘
</aside>
- μν νλ?
- μν νμ ꡬ쑰