π[Data Structure] μ€νκ³Ό ν?
μ€νκ³Ό ν
μ€ν
κ³Ό ν
λ 리μ€νΈμμ μ‘°κΈ λ λ°μ ν ννμ μλ£κ΅¬μ‘°μ.
μ€νκ³Ό νλ ꡬ쑰λ λΉμ·νμ§λ§, μ²λ¦¬ λ°©μμμ μ°¨μ΄λ₯Ό 보μΈλ€.
μ€ν
μ€ν(stack)
μ μ½μ
κ³Ό μμ μ°μ°μ΄ νμ
μ μΆ(LIFO)
λ‘ μ΄λ€μ§λ μλ£κ΅¬μ‘°μ.
νμ μ μΆμ μ½μ κ³Ό μμ κ° ν μͺ½μμλ§ μΌμ΄λλ€λ νΉμ§μ΄ μλ€.
μ»΅μ μκ°νλ©΄ μ’μλ―!
νμ΄μ¬μμλ 리μ€νΈλ₯Ό μ΄μ©ν΄ μ€νμ μ½κ² ꡬνν μ μλ€!
νμ΄μ¬μ μ€ν
- top: μ½μ κ³Ό μμ κ° μΌμ΄λλ μμΉλ₯Ό λ»ν¨.
- s.append(): top μμΉμ μλ‘μ΄ λ°μ΄ν°λ₯Ό μ½μ νλ μ°μ°
- s.pop(): top μμΉμ νμ¬ μλ λ°μ΄ν°λ₯Ό μμ νκ³ νμΈνλ μ°μ°
- s[-1]: top μμΉμ νμ¬ μλ λ°μ΄ν°λ₯Ό λ¨μ νμΈνλ μ°μ°
μ€νμ DFS, λ°±νΈλνΉ λ¬Έμ μμ ν¨κ³Όμ μ΄λ―λ‘ λ°λμ μ΄ν΄νκ³ λμ΄κ°μ!
ν
ν(queue)
λ μ½μ
κ³Ό μμ μ°μ°μ΄ μ μ
μ μΆ(FIFO)
λ‘ μ΄λ€μ§λ μλ£κ΅¬μ‘°μ.
μ€νκ³Ό λ€λ₯΄κ² λ¨Όμ λ€μ΄μ¨ λ°μ΄ν°κ° λ¨Όμ λκ°λ€!
κ·Έλμ μ½μ κ³Ό μμ κ° μλ°©ν₯μμ μ΄λ€μ§λ€λ νΉμ§μ΄ μλ€.
νμ΄νλ₯Ό μκ°νλ©΄ μ’μλ―!
νμ΄μ¬μ ν
- rear: νμμ κ°μ₯ λ λ°μ΄ν°λ₯Ό κ°λ¦¬ν€λ μμ
- front: νμμ κ°μ₯ μμ λ°μ΄ν°λ₯Ό κ°λ¦¬ν€λ μμ
- s.append(data): rear λΆλΆμ μλ‘μ΄ λ°μ΄ν°λ₯Ό μ½μ νλ μ°μ°
- s.popleft(): front λΆλΆμ μλ λ°μ΄ν°λ₯Ό μμ νκ³ νμΈνλ μ°μ°
- s[0]: νμ 맨 μ(front)μ μλ λ°μ΄ν°λ₯Ό νμΈν λ μ¬μ©νλ μ°μ°
νλ BFSμμ μμ£Ό μ¬μ©νλ€!
μ°μ μμ ν?
μ°μ μμ ν(priority queue)
λ κ°μ΄ λ€μ΄κ° μμμ μκ΄ μμ΄ μ°μ μμκ° λμ λ°μ΄ν°κ° λ¨Όμ λμ€λ μλ£κ΅¬μ‘°μ.
ν μ€μ μ λ°λΌ frontμ νμ μ΅λκ° λλ μ΅μκ°μ΄ μμΉνλ€.
μΌλ°μ μΌλ‘ ν(heap)
μ μ΄μ©ν΄ ꡬννλλ°, νμ νΈλ¦¬ μ’
λ₯ μ€ νλμ!
κ΄λ ¨ λ¬Έμ
| βοΈ λ¬Έμ λ ꡬκΈλ§ν΄μ λ€λ₯Έ μ¬λλ€μ μ½λλ₯Ό λ³΄κ³ νΌ μ½λ νΉμ μ λλ‘ μ΄ν΄νμ§ λͺ»ν΄ νμ§ λͺ»ν λ¬Έμ λ€
μ€ν° μ βοΈ
μ€ν° μ
λ¬Έμ λ λ€μ νμ΄λ³΄μ
λκΈλ¨κΈ°κΈ°