1. μ€ν(Stack)μ΄λ?
μ€ν(Stack)μ μλ£λ₯Ό 보κ΄νλ μ ν μλ£κ΅¬μ‘°λ‘, νμ μ μΆ(LIFO, Last-In-First-Out)μ μμΉμ λ°λ¦ λλ€. μ΄λ κ°μ₯ μ΅κ·Όμ μ½μ λ νλͺ©μ΄ κ°μ₯ λ¨Όμ μμ λλ ꡬ쑰λ₯Ό λ§ν©λλ€. μ€νμ μ€μ μνμμ μΌμμ μΌλ‘ λ³Ό μ μλ μ¬λ‘ μ€ νλλ‘, μ± μ μμ κ²μ΄λ μ μλ₯Ό μμλμ κ²μ μκ°ν΄λ³Ό μ μμ΅λλ€.
μ€νμ μ£Όλ‘ νλ‘κ·Έλλ°μ΄λ μ»΄ν¨ν° κ³Όνμμ λ§μ΄ νμ©λλ©°, λ°μ΄ν°μ μ μ₯κ³Ό κ²μμ μν ν¨μ¨μ μΈ λ°©λ²μ μ 곡ν©λλ€. μμλ€μ μ€νμ μμ μμ¬μ§λλ°, μ½μ (insert)μ΄λ μμ (delete)ν μ μλ μ μ΄ μ€νμ νΉμ§μ λλ€.
μ€νμ λ§μ μκ³ λ¦¬μ¦κ³Ό λ°μ΄ν° ꡬ쑰μμ μ¬μ©λλ μ€μν μμμ΄λ©°, νμ€ μΈκ³μμλ λ§μ κ³³μμ νμ©λ©λλ€. λ°λΌμ μ€νμ λν μ΄ν΄λ νλ‘κ·Έλλ° λ° μ»΄ν¨ν° κ³Όν λΆμΌμμ ν΅μ¬μ μΈ κ°λ μ λλ€.
2. μ€νμ ꡬ쑰μ μ리
μ€νμ μΌλ ¬λ‘ μ λ ¬λ μμλ€μ μ μ₯νλ μ°μμ μΈ κ΅¬μ‘°λ₯Ό κ°μ§λ©°, 맨 μμ μλ μμλ₯Ό ν(Top)μ΄λΌκ³ ν©λλ€. μ€νμ ꡬ쑰λ λ€μκ³Ό κ°μ΄ κΈ°λ³Έμ μΌλ‘ λ κ°μ§ μμλ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
μμ(Element): μ€νμ μ μ₯λλ κ°λ³μ μΈ λ°μ΄ν° νλͺ©μ λλ€.
ν(Top): μ€νμ κ°μ₯ μμ μλ μμλ₯Ό κ°λ¦¬ν€λ ν¬μΈν°μ λλ€. μΌλ°μ μΌλ‘ μ€νμ μ΄κΈ° μνμμλ νμ΄ κ°λ¦¬ν¬ μμκ° μμ΅λλ€.
μ€νμ μ리λ νμ μ μΆ(LIFO, Last-In-First-Out)μ λλ€. μ¦, κ°μ₯ μ΅κ·Όμ μ€νμ μΆκ°λ(μ½μ λ) μμκ° κ°μ₯ λ¨Όμ μ κ±°(μμ )λλ μ리μ λλ€. μ΄λ 맨 μ(top)μμλ§ μμμ μ κ·Όν μ μλ€λ μλ―Έλ₯Ό μ§λκ² λ©λλ€. λ°λΌμ μ€νμ μλ‘μ΄ μμλ₯Ό μ€νμ νμ μ½μ νκ±°λ, νμμ μμλ₯Ό μμ νλ λ κ°μ§ κΈ°λ³Έμ μΈ μ°μ°μ μ§μν©λλ€.
μ€νμ μΌλ°μ μΌλ‘ λ°°μ΄(Array)μ΄λ μ°κ²° 리μ€νΈ(Linked List)λ₯Ό μ΄μ©νμ¬ κ΅¬νλ©λλ€. λ°°μ΄μ ν¬κΈ°κ° κ³ μ λμ΄ μλ κ²½μ°μ μ¬μ©λλ©°, μ°κ²° 리μ€νΈλ μ€νμ ν¬κΈ°κ° λμ μΌλ‘ λ³νν μ μλ κ²½μ°λ₯Ό λ€λ£° λ μ¬μ©λ©λλ€. μ΄λ¬ν ꡬ쑰μ μ리λ₯Ό ν΅ν΄ μ€νμ λ€μν λ¬Έμ λ₯Ό ν΄κ²°νλ λ° μ μ©νκ² νμ©λ μ μμ΅λλ€.
3. μ€νμ μ£Όμ μ°μ°
μ€νμ λ€μκ³Ό κ°μ΄ λ€ κ°μ§μ μ£Όμ μ°μ°μ μ§μν©λλ€.
Push(μ½μ ): μ€νμ νμ μλ‘μ΄ μμλ₯Ό μΆκ°ν©λλ€. μ΄ μ°μ°μ μλ‘μ΄ μμλ₯Ό μ€νμ κ°μ₯ μμ μ½μ νκ³ , νμ μ΄λμν€λ μν μ ν©λλ€.
Pop(μμ ): μ€νμμ νμ μλ μμλ₯Ό μ κ±°ν©λλ€. μ΄ μ°μ°μ νμ μμΉν μμλ₯Ό μμ νκ³ , νμ μ΄μ μμΉλ‘ μ΄λμν΅λλ€.
Top(νμ): μ€νμ νμ μμΉν μμλ₯Ό λ°νν©λλ€. μ΄ μ°μ°μ μ€νμ κ°μ₯ μμ μλ μμλ₯Ό μ½λ μν μ ν©λλ€.
IsEmpty(곡백 μ¬λΆ νμΈ): μ€νμ΄ λΉμ΄ μλμ§ μ¬λΆλ₯Ό νμΈν©λλ€. μ΄ μ°μ°μ μ€νμ΄ λΉμ΄ μμΌλ©΄ Trueλ₯Ό λ°ννκ³ , λΉμ΄ μμ§ μμΌλ©΄ Falseλ₯Ό λ°νν©λλ€.
μ€νμ ꡬνν λλ, μ½μ κ³Ό μμ μ°μ°μ μ£Όμν΄μΌ ν©λλ€. μ€νμ νμ μ μΆ(LIFO)μ μ리μ λ°λΌ, νμ κ°μ₯ μ΅κ·Όμ μ½μ λ μμλ₯Ό μμ ν΄μΌ ν©λλ€. λ°λΌμ μ½μ μ°μ°μμλ μ€νμ νμ κ³μν΄μ κ°±μ ν΄μΌ νκ³ , μμ μ°μ°μμλ νμ νμ μμΉν μμλ₯Ό μμ ν΄μΌ ν©λλ€.
μ΄λ¬ν μ£Όμ μ°μ°μ νμ©νμ¬ μ€νμ λ€μν λ¬Έμ λ₯Ό ν¨μ¨μ μΌλ‘ ν΄κ²°ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ€νμ κ΄νΈμ μ§μ΄ λ§λμ§ νμΈνκ±°λ, μΉ λΈλΌμ°μ μ μ΄μ νμ΄μ§μ λ€μ νμ΄μ§λ₯Ό κ΄λ¦¬νλ λ±μ κΈ°λ₯μ ꡬννλ λ° μ¬μ©λ μ μμ΅λλ€.
4. μ€νμ νμ© λΆμΌ
μ€νμ λ€μν λΆμΌμμ νμ©λ μ μμ΅λλ€. μ£Όμν νμ© λΆμΌλ λ€μκ³Ό κ°μ΅λλ€.
4.1 μλ£ κ΅¬μ‘° κ΄λ¦¬
μ€νμ κΈ°λ³Έμ μΈ μλ£ κ΅¬μ‘°λ‘μ νμ©λ©λλ€. μ€νμ μ΄μ©νλ©΄ λ°μ΄ν°λ₯Ό μ½κ² μ½μ νκ³ μμ ν μ μκΈ° λλ¬Έμ, λ€λ₯Έ μλ£ κ΅¬μ‘°λ₯Ό ꡬννλ λ°μλ νμ©λ©λλ€. μλ₯Ό λ€μ΄, μ€νμ λ―Έλ‘ μ°ΎκΈ° μκ³ λ¦¬μ¦μμ κ²½λ‘λ₯Ό κΈ°μ΅νλ λ° μ¬μ©λλ©°, κ·Έλν μκ³ λ¦¬μ¦μμ κΉμ΄ μ°μ νμ(DFS)μ ꡬννλ λ°μλ μ¬μ©λ©λλ€.
4.2 ν¨μ νΈμΆκ³Ό 볡κ·
ν¨μ νΈμΆκ³Ό 볡κ·μ μ€νμ νμ©νμ¬ ν¨μ νΈμΆμ μ€ν νλ¦μ κ΄λ¦¬ν μ μμ΅λλ€. ν¨μ νΈμΆ μμλ νΈμΆν ν¨μμ μ 보λ₯Ό μ€νμ μ½μ νκ³ , ν¨μκ° μλ£λλ©΄ μ€νμμ ν΄λΉ μ 보λ₯Ό μ κ±°νμ¬ νΈμΆν ν¨μλ‘ λλμκ° μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ ν¨μμ μ€μ²© νΈμΆκ³Ό μ¬κ· νΈμΆμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μμ΅λλ€.
4.3 κ΄νΈ μ§ λ§μΆκΈ°
μ€νμ κ΄νΈμ μ§μ λ§μΆλ λ°μλ νμ©λ©λλ€. κ΄νΈμ μ§μ΄ λ§λμ§ νμΈνκΈ° μν΄μλ μ΄λ¦° κ΄νΈκ° λ«ν κ΄νΈμ μ νν 맀μΉλμ΄μΌ ν©λλ€. μ€νμ νμ©νλ©΄ μ΄λ¦° κ΄νΈλ₯Ό λ°κ²¬ν λλ§λ€ μ€νμ μ½μ νκ³ , λ«ν κ΄νΈλ₯Ό λ°κ²¬ν λλ§λ€ μ€νμμ ν΄λΉ μ΄λ¦° κ΄νΈλ₯Ό μ κ±°ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κ΄νΈμ μ§μ΄ λ§λμ§ ν¨μ¨μ μΌλ‘ νμΈν μ μμ΅λλ€.
4.4 μΉ λΈλΌμ°μ μ μ΄μ νμ΄μ§μ λ€μ νμ΄μ§ κ΄λ¦¬
μ€νμ μΉ λΈλΌμ°μ μμ μ΄μ νμ΄μ§μ λ€μ νμ΄μ§λ₯Ό κ΄λ¦¬νλ λ°μλ μ΄μ©λ©λλ€. μ΄μ νμ΄μ§λ₯Ό λ°©λ¬Έν λλ§λ€ νμ¬ νμ΄μ§λ₯Ό μ€νμ μ½μ νκ³ , λ€μ νμ΄μ§λ‘ μ΄λν λλ§λ€ μ€νμμ ν΄λΉ νμ΄μ§λ₯Ό μ κ±°ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ΄μ νμ΄μ§μ λ€μ νμ΄μ§λ₯Ό μ½κ² κ΄λ¦¬νκ³ , 'λ€λ‘ κ°κΈ°'μ 'μμΌλ‘ κ°κΈ°' κΈ°λ₯μ ꡬνν μ μμ΅λλ€.
μμ μμ μΈμλ μ€νμ λ€μν λΆμΌμμ νμ©λ μ μμ΅λλ€. μ€νμ μλ£λ₯Ό μμμ μΌλ‘ μ μ₯νκ±°λ, μ€ν νλ¦μ μ μ΄νλ λ°μ μ μ©νλ©°, μ½λ© λ¬Έμ ν΄κ²°μμλ νν μ¬μ©λλ μλ£ κ΅¬μ‘°μ λλ€.
5. μ€νκ³Ό κ΄λ ¨λ μκ³ λ¦¬μ¦ λ° μλ£κ΅¬μ‘°
μ€νμ λ€λ₯Έ μκ³ λ¦¬μ¦ λ° μλ£κ΅¬μ‘°μ ν¨κ» μ¬μ©λλ κ²½μ°κ° λ§μ΅λλ€. μ΄λ¬ν μ‘°ν©μ λ€μν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ¬μ©λ©λλ€. μ£Όμν μκ³ λ¦¬μ¦ λ° μλ£κ΅¬μ‘°μμ κ΄λ ¨μ±μ μ΄ν΄λ³΄κ² μ΅λλ€.
5.1 ν(Queue)
νλ μ€νκ³Ό λ§μ°¬κ°μ§λ‘ μλ£λ₯Ό μ μ₯νλ μ ν μλ£κ΅¬μ‘°μ λλ€. νμ§λ§ μ€νμ νμ μ μΆ(LIFO)μ ꡬ쑰λ₯Ό κ°μ§λ λ°λ©΄, νλ μ μ μ μΆ(FIFO)μ ꡬ쑰λ₯Ό κ°μ§λλ€. μ€νκ³Ό νλ μλ£μ μ½μ κ³Ό μμ μμμ μμ΄μ ν° μ°¨μ΄λ₯Ό 보μ΄λ©°, μλ‘ λ³΄μμ μΌλ‘ μ¬μ©λλ κ²½μ°κ° λ§μ΅λλ€. μλ₯Ό λ€μ΄, μ€νκ³Ό νλ₯Ό ν¨κ» μ¬μ©νμ¬ κ·Έλνμμ λλΉ μ°μ νμ(BFS)μ ꡬνν μ μμ΅λλ€.
5.2 μ¬κ· νΈμΆ(Recursion)
μ€νμ μ¬κ· νΈμΆκ³Ό λ°μ ν κ΄λ ¨μ΄ μμ΅λλ€. μ¬κ· νΈμΆμ ν¨μ λ΄μμ μκΈ° μμ μ νΈμΆνλ ꡬ쑰λ₯Ό λ§νλ©°, μ΄λ μ€νμ νμ μ μΆ κ΅¬μ‘°μ μ μ¬ν©λλ€. μ¬κ· νΈμΆμ΄ λ°μνλ©΄ νΈμΆλ ν¨μμ μ 보λ μ€νμ μ μ₯λ©λλ€. μ¬κ· νΈμΆμ΄ μ’ λ£λλ©΄ ν΄λΉ ν¨μμ μ λ³΄κ° μ€νμμ μ κ±°λλ©΄μ μ΄μ ν¨μλ‘ λ³΅κ·ν μ μμ΅λλ€. μ€νμ μ΄λ¬ν μ¬κ· νΈμΆμ μ€ν νλ¦μ κ΄λ¦¬νλ λ° μ¬μ©λλ©°, 볡μ‘ν λ¬Έμ λ₯Ό κ°λ¨νκ² ν΄κ²°ν μ μκ² ν΄μ€λλ€.
5.3 κΉμ΄ μ°μ νμ(DFS)
κΉμ΄ μ°μ νμμ κ·Έλν ꡬ쑰μμ μ¬μ©λλ νμ μκ³ λ¦¬μ¦μΌλ‘, ν κ²½λ‘λ₯Ό κ³μν΄μ λμκ°λ€κ° λ μ΄μ κ° μ μκ² λλ©΄ μ΄μ μμΉλ‘ λμμ λ€λ₯Έ κ²½λ‘λ₯Ό νμν©λλ€. μ€νμ κΉμ΄ μ°μ νμμμ μ¬μ©λλ μλ£κ΅¬μ‘°λ‘μ, νμ¬ μμΉμμ κ° μ μλ κ²½λ‘λ₯Ό μ€νμ μ μ₯νκ³ , κ²½λ‘μ λμ λλ¬ν λκΉμ§ λ°λ³΅μ μΌλ‘ μ€νμμ κ° μ μλ κ²½λ‘λ₯Ό νμν©λλ€.
5.4 λ°μ κ΄νΈ
μ€νμ κ΄νΈμ μ§μ νμΈνλ λ°μλ μ¬μ©λ©λλ€. λ€μν λ¬Έμ μμ κ΄νΈμ μ§μ νμΈν΄μΌ ν κ²½μ°κ° μλλ°, μ΄λ₯Ό μν΄ μ€νμ νμ©ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, κ΄νΈλ‘ μ΄λ£¨μ΄μ§ λ¬Έμμ΄μμ μ΄λ¦° κ΄νΈκ° λ«ν κ΄νΈμ μ§μ΄ λ§λμ§ νμΈνκΈ° μν΄μλ μ€νμ μ¬μ©νμ¬ μ΄λ¦° κ΄νΈλ₯Ό μ μ₯νκ³ , λ«ν κ΄νΈλ₯Ό λ§λ¬μ λ μ€νμμ ν΄λΉ μ΄λ¦° κ΄νΈλ₯Ό μ κ±°ν΄μΌ ν©λλ€.
μμ μμ μΈμλ μ€νμ λ€μν μκ³ λ¦¬μ¦ λ° μλ£κ΅¬μ‘°μ κ΄λ ¨μ΄ μμ΅λλ€. μ€νμ κ·Έ μμ²΄λ‘ μ μ©ν μλ£κ΅¬μ‘°μ΄μ§λ§, λ€λ₯Έ μλ£κ΅¬μ‘°μ μ‘°ν©νμ¬ λ€μν λ¬Έμ λ₯Ό ν΄κ²°νλ λ° νμ©λ μ μμ΅λλ€.
λκΈ