- 9μ₯μμλ μ€νκ³Ό νλ₯Ό μμλ³Έλ€.
- μ€νκ³Ό νλ μμ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μλ κ°κ²°ν λꡬλ€.
- μ΄μ 체μ μν€ν
μ²λΆν° μΆλ ₯, λ°μ΄ν° μνμ μ΄λ₯΄κΈ°κΉμ§ μ€νκ³Ό νλ₯Ό μμ 컨ν
μ΄λλ‘ νμ©νμ¬ λ°μ΄λ μκ³ λ¦¬μ¦μ λ§λ€ μ μλ€.
1. μ€ν
- μ€νμ΄ λ°μ΄ν°λ₯Ό μ μ₯νλ λ°©λ²μ λ°°μ΄κ³Ό κ°λ€. μ¦, μμλ€μ 리μ€νΈλ€.
- μ€νμλ λ€μκ³Ό κ°μ μ μ½μ΄ μλ€.
- λ°μ΄ν°λ μ€νμ λμλ§ μ½μ
ν μ μλ€.
- λ°μ΄ν°λ μ€νμ λμμλ§ μμ ν μ μλ€.
- μ€νμ λ§μ§λ§ μμλ§ μ½μ μ μλ€.
- μ μ λλ―Έλ₯Ό μμμ¬λ¦° κ²μ²λΌ μκ°ν΄λ μ’λ€.
- μ€νμ λ(μ½μ
, μμ , μ½κΈ° κ°λ₯)μ top, λ°μ bottomμ΄λΌκ³ νλ€.
- μ€νμ μ κ°μ μ½μ
νλ κ²μ μ€νμ νΈμνλ€κ³ λ λ§νλ€.
- μ€νμ λμμ μμλ₯Ό μ κ±°νλ κ²μ popμ΄λΌκ³ νλ€.
- LIFO - Last In, First Out
2. μΆμ λ°μ΄ν° νμ
- μ€μ λ‘ λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄μμλ μ€νμ΄ λ΄μ₯ λ°μ΄ν° νμ
μ΄λ ν΄λμ€λ‘ λΈλ € μμ§ μλ€.
- λ°°μ΄κ³Όλ κ·Ήλͺ
νκ² λμ‘°λλ€.
- μ€νμ΄λΌλ μλ£κ΅¬μ‘°λ λ°°μ΄κ³Ό μ’
λ₯κ° λ€λ₯΄λ€.
- λ°°μ΄μ λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄μ λ΄μ₯λμ΄ μκ³ μ»΄ν¨ν° λ©λͺ¨λ¦¬μ μ§μ μνΈμμ©νλ€.
- λ°λ©΄ μ€νμ κ·μΉμ μ§ν©μ΄λ©° νΉμ κ²°κ³Όλ₯Ό μ»κΈ° μν΄ λ°°μ΄κ³Ό μνΈμμ©νλ λ°©μμ΄λ€.
- μ€νμ λ΄λΆμ μΌλ‘ μ΄λ€ μλ£κ΅¬μ‘°λ₯Ό μ°λ μκ΄μλ€. LIFO λ°©μμΌλ‘ λμν μ μλ λ°μ΄ν° μμλ€μ 리μ€νΈλ©΄ λλ€.
- κ·Έλ κΈ° λλ¬Έμ μ€νμ μΆμ λ°μ΄ν° νμ
μ μνλ€.
- 1μ₯μμ λ΄€λ μ§ν© μμ μΆμ λ°μ΄ν° νμ
μ΄λ€.
- μ€νκ³Ό μ§ν©μ μλ£κ΅¬μ‘° μ체λ κ·Έμ μ΄λ‘ μμ κ°λ
μΌ λΏμ΄λ€.
// kotlinμλ stackμ ꡬνμ΄ μ‘΄μ¬νμ§ μλλ€. μ¦, μ§μ ꡬννκ±°λ javaμ stackμ μ¬μ©ν΄μΌ νλ€.
import java.util.Stack
val stack = Stack<Int>()
- μ¬κΈ°μ μ¬μ©λλ Javaμ Stackμ λ€μκ³Ό κ°μ μμ ꡬ쑰λ₯Ό κ°μ§λ€.
Javaμ Stack μμꡬ쑰
4. μ μ½μ κ°λ λ°μ΄ν° ꡬ쑰μ μ€μμ±
- μ μλλ‘ μ€νμ΄ μ μ½μ κ°λ λ°°μ΄μΌ λΏμ΄λΌλ©΄ μ€νμ΄ νλ μΌμ λ°°μ΄λ ν μ μλ€λ λ»μ΄λ€.
- κ·Έλ λ€λ©΄ μ€νμ΄ μ£Όλ μ΄μ μ 무μμΌκΉ?
- μ μ½μ κ°λ λ°μ΄ν° ꡬ쑰λ λ€μκ³Ό κ°μ μ€μμ±μ κ°μ§λ€.
- μ μ¬μ λ²κ·Έλ₯Ό λ§μ μ μλ€.
- λ¬Έμ λ₯Ό ν΄κ²°νλ μλ‘μ΄ μ¬κ³ λͺ¨λΈ(mental model)μ μ 곡νλ€.
- LIFO μμ±μ μ΄ν΄νμ¬ μμ±ν μ½λλ λ€λ₯Έ κ°λ°μμκ² μ΅μνκ³ λͺ
λ°±νκ² μ΄ν΄λ μ μλ€.
5. ν
- μ€νκ³Ό λ§μ°¬κ°μ§λ‘, νλ μμ λ°μ΄ν°λ₯Ό μ²λ¦¬νκΈ° μν΄ λμμΈλ λ°μ΄ν° ꡬ쑰λ€. μμλ₯Ό μ μΈνλ©΄ λ§μ λ©΄μμ μ€νκ³Ό λΉμ·νλ€.
- νλ μΆμ λ°μ΄ν° νμ
μ΄λ€.
- FIFO - First In, First Out
- νμ μμμ μ(front), λμ λ€(back)λΌκ³ νλ€.
- νλ λ€μκ³Ό κ°μ μ μ½μ κ°μ§λ€.
- λ°μ΄ν°λ νμ λμλ§ μ½μ
ν μ μλ€. (μ€νκ³Ό λμΌ)
- λ°μ΄ν°λ νμ μμμλ§ μμ ν μ μλ€. (μ€νκ³Ό λ°λ)
- νμ μμ μλ μμλ§ μ½μ μ μλ€. (μ€νκ³Ό λ°λ)
// kotlinμλ Queueμ ꡬνμ΄ μ‘΄μ¬νμ§ μλλ€.
// Javaμμ μ 곡νλ Queueλ₯Ό μ¬μ©ν κ²½μ° Queueκ° μΈν°νμ΄μ€μ΄κΈ° λλ¬Έμ Queueλ‘ μ μΈνλ LinkedListμ ν λΉν΄ μ£Όμ΄μΌ νλ€.
// ArrayListλ‘λ ꡬνμ΄ κ°λ₯νλ€.
var queue: Queue<Int> = LinkedList()
7. λ§λ¬΄λ¦¬
- μ€νκ³Ό νλ μ€μ©μ μΈ μκ³ λ¦¬μ¦μ κ°κ²°νκ² μ²λ¦¬ν μ μλ λꡬλ€.
- λ€μμ μ€νμ κΈ°λ°ν μ¬κ·λ₯Ό λ°°μ λ³Έλ€.