μ€νμ "μλλ€"λ κ°λ
κ³Ό κ°μ₯ μ μ΄μΈλ¦¬λ μλ£κ΅¬μ‘°λ€. λ°μ΄ν°λ₯Ό 차곑차곑 μμ μ¬λ¦¬λ ννλ‘ μ μ₯νλ©° κ°μ₯ λ§μ§λ§μ λ€μ΄κ° λ°μ΄ν°κ° κ°μ₯ λ¨Όμ μ κ±°λλ νμ
μ μΆ(LIFO, Last-In-First-Out) λ°©μμΌλ‘ λμνλ€.
μ€νμ ꡬ쑰μ μΌλ‘ νμͺ½ λ(Top)μμλ§ λ°μ΄ν°μ μ κ·Ό, μ½μ , μμ κ° μ΄λ£¨μ΄μ§λ€.
push(item): μ€νμ 맨 μμ μλ‘μ΄ λ°μ΄ν°λ₯Ό μΆκ°νλ€. pop(): μ€νμ 맨 μμ μλ λ°μ΄ν°λ₯Ό μ κ±°νκ³ κ·Έ κ°μ λ°ννλ€. peek() λλ top(): μ€νμ 맨 μμ μλ λ°μ΄ν°λ₯Ό μ κ±°νμ§ μκ³ μ΄λ€ κ°μΈμ§ νμΈλ§ νλ€. isEmpty(): μ€νμ λ°μ΄ν°κ° μ‘΄μ¬νμ§ μκ³ λΉμ΄μλμ§ μ¬λΆλ₯Ό λ
Όλ¦¬κ°(boolean)μΌλ‘ λ°ννλ€. μ½μ
λ° μμ (push, pop)
μ€νμ νμ μ΅μλ¨μμλ§ λ°μ΄ν°λ₯Ό μΆκ°νκ±°λ μ κ±°νλ―λ‘ λ°μ΄ν°μ κ°μμ μκ΄μμ΄ O(1)μ μκ° λ³΅μ‘λλ₯Ό κ°μ§λ€.
νμ
νΉμ μμλ₯Ό μ°ΎμΌλ €λ©΄ μ΅μλ¨λΆν° μμ°¨μ μΌλ‘ λ°μ΄ν°λ₯Ό νμΈν΄μΌ νλ€. λ°λΌμ μ΅μ
μ κ²½μ° λͺ¨λ λ°μ΄ν°λ₯Ό νμΈν΄μΌ νλ―λ‘ O(n)μ μκ° λ³΅μ‘λλ₯Ό κ°μ§λ€.
μ€νμ λ°μ΄ν°μ μμ
μμλ₯Ό μΆμ νκ³ κ°μ₯ μ΅κ·Όμ μνλ‘ λλμκ°μΌ νλ κΈ°λ₯μ μ£Όλ‘ μ¬μ©λλ€.
μ€ν μ·¨μ (Undo)
λ¬Έμ νΈμ§κΈ° λ±μμ μ¬μ©μκ° κ°μ₯ μ΅κ·Όμ μ€νν μμ
λΆν° μμ°¨μ μΌλ‘ μ·¨μνλ€.
μΉ λΈλΌμ°μ λ°©λ¬Έ κΈ°λ‘
λ€λ‘ κ°κΈ° κΈ°λ₯ μλ μ κ°μ₯ λ§μ§λ§μ λ°©λ¬Έν νμ΄μ§λΆν° μμλλ‘ λ‘λνλ€.
ν¨μμ μ½ μ€ν (Call Stack)
νλ‘κ·Έλ¨ μ€ν μ€ ν¨μκ° νΈμΆλ λ ν΄λΉ ν¨μμ μ§μ λ³μμ λ³΅κ· μ£Όμ λ±μ μ μ₯νκ³ ν¨μ μ’
λ£ μ μ΄μ μ€ν μμΉλ‘ λμκ°λ λ° μ¬μ©λλ€.
μμ λ° κ΄νΈ κ²μ¬
νλ‘κ·Έλλ° μ½λλ μμμμ μ΄λ¦° κ΄νΈμ λ«ν κ΄νΈμ μ§μ΄ μ¬λ°λ₯΄κ² λ§λμ§ κ²μ¦ν λ μ¬μ©λλ€.
DFS (Depth-First Search, κΉμ΄ μ°μ νμ)
κ·Έλν νμ κ³Όμ μμ κΉμ΄λ₯Ό μ°μ μ μΌλ‘ νμν λ μ€ν κ΅¬μ‘°κ° νμ©λ μ μλ€.
[μ°μ΅ λ¬Έμ λ§ν¬]
1. μ€ν
2. κ΄νΈ
3. μ λ§λκΈ°
4. ν
νλ λ°μ΄ν°λ₯Ό μμλλ‘ μ μ₯νλ©° κ°μ₯ λ¨Όμ λ€μ΄κ° λ°μ΄ν°κ° κ°μ₯ λ¨Όμ μ κ±°λλ μ μ
μ μΆ(FIFO, First-In-First-Out) λ°©μμΌλ‘ λμνλ€.
μ¦ λ¨Όμ λ€μ΄μ¨ λ°μ΄ν°κ° λ¨Όμ λκ°λ©° λ§μΉ λ§€νμμμ μ€μ μ μ¬λμ΄ λ¨Όμ νλ₯Ό ꡬ맀νκ³ λκ°λ ꡬ쑰μ κ°λ€.
νλ ꡬ쑰μ μΌλ‘ νμͺ½ λ(Rear)μμλ λ°μ΄ν°μ μ½μ , λ°λμͺ½ λ(Front)μμλ λ°μ΄ν°μ μμ κ° μ΄λ£¨μ΄μ§λ€.
enqueue(item): νμ 맨 λ€μ μλ‘μ΄ λ°μ΄ν°λ₯Ό μΆκ°νλ€. dequeue(): νμ 맨 μμ μλ λ°μ΄ν°λ₯Ό μ κ±°νκ³ κ·Έ κ°μ λ°ννλ€. peek() λλ front(): νμ 맨 μμ μλ λ°μ΄ν°λ₯Ό μ κ±°νμ§ μκ³ μ΄λ€ κ°μΈμ§ νμΈλ§ νλ€. isEmpty(): νμ λ°μ΄ν°κ° μ‘΄μ¬νμ§ μκ³ λΉμ΄μλμ§ μ¬λΆλ₯Ό λ
Όλ¦¬κ°(boolean)μΌλ‘ λ°ννλ€. μ½μ
λ° μμ (enqueue, dequeue)
μμΉλ₯Ό μ°Ύλ κ³Όμ μμ΄ νμ μ λλ¨μμ λ°λ‘ μ°μ°μ΄ μνλλ―λ‘ λ°μ΄ν°μ κ°μμ 무κ΄νκ² O(1)μ μκ° λ³΅μ‘λλ₯Ό κ°μ§λ€.
νμ
νΉμ μμλ₯Ό μ°ΎκΈ° μν΄μλ 맨 μλΆν° μμ°¨μ μΌλ‘ λ°μ΄ν°λ₯Ό νμΈν΄μΌ νλ―λ‘ μ΅μ
μ κ²½μ° O(n)μ μκ° λ³΅μ‘λλ₯Ό κ°μ§λ€.
νλ μ£Όλ‘ λ°μ΄ν°κ° μ
λ ₯λ μμλλ‘ μμ°¨μ μΈ μ²λ¦¬κ° νμν μν©μ μ¬μ©λλ€.
μ΄μ체μ μ μμ
μ€μΌμ€λ§
CPUλ₯Ό ν λΉλ°κΈ° μν΄ λκΈ°νλ νλ‘μΈμ€λ€μ΄λ λμ€ν¬ μ€μΌμ€λ§ λ±μ μμλλ‘ κ΄λ¦¬νλ€.
νλ¦°ν° μΈμ λκΈ°μ΄ (Spooling)
μ¬λ¬ μΈμ μμ²μ΄ λ€μ΄μμ λ λ¨Όμ μμ²λ λ¬ΈμλΆν° μμ°¨μ μΌλ‘ μΆλ ₯νλ€.
λ©μμ§ ν (Message Queue)
μμ€ν
κ° λΉλκΈ°μ μΈ λ°μ΄ν° κ΅ν νκ²½μμ νΈλν½μ μ μ΄νκ³ λ°μ΄ν°λ₯Ό μμ°¨μ μΌλ‘ μ λ¬νκΈ° μν λ²νΌ μν μ νλ€.
λλΉ μ°μ νμ (BFS, Breadth-First Search)
κ·Έλν νμ μκ³ λ¦¬μ¦μμ μμ μ μ μΌλ‘λΆν° κ°κΉμ΄ μ μ λΆν° μμλλ‘ λ°©λ¬ΈνκΈ° μν΄ νλ₯Ό νμ©νλ€.
[μ°μ΅ λ¬Έμ λ§ν¬]
1. ν
2. μμΈνΈμ€ λ¬Έμ
3. μΉ΄λ1
4. νλ¦°ν° ν
