μ€ν(Stack)
μ€νμ λ°μ΄ν°λ₯Ό μ νμ μΌλ‘ μ κ·Όν μ μλ μλ£κ΅¬μ‘°μ΄λ€. μμ κΈμμ μ€λͺ ν νλ FIFO λ°©μμ μ¬μ©νλ μλ£κ΅¬μ‘°μ΄λ€. μ€νμ LIFO(Last-In, First-Out) λ°©μμ μ¬μ©νλ μλ£κ΅¬μ‘°μ΄λ€. μ¦, κ°μ₯ λ§μ§λ§μ λ£μ λ°μ΄ν°λ₯Ό κ°μ₯ λ¨Όμ κΊΌλ΄λ μλ£κ΅¬μ‘°λΌκ³ ν μ μλ€.
μ΄ μλ£κ΅¬μ‘°κ° νμ©λλ λνμ μΈ μμλ‘λ μ°λ¦¬κ° μ§κΈ μ¬μ©νκ³ μλ Javaμ JVMμ΄λ€. JVMμλ λ©μλ νΈμΆ μ, μ€ν λ©λͺ¨λ¦¬μ λ©μλκ° λ΄κΈ°λλ° μ΄ λ μ€ν μλ£κ΅¬μ‘°κ° νμ©λλ€. μλ₯Ό λ€μ΄ Aλ©μλ μμμ Bλ©μλλ₯Ό νΈμΆνλ€κ³ κ°μ ν΄λ³΄μ.
κ·ΈλΌ Aλ©μλκ° μ€ν μμμ ν λΉλκ³ , κ·Έ λ€μ Bλ©μλλ₯Ό νΈμΆνλ λΆλΆμμ Bλ©μλκ° ν λΉλ κ²μ΄λ€. λΉμ°νκ²λ λ©μλμ νλ¦μ Bλ©μλκ° λ¨Όμ λμμ΄ λλ ν λ Bλ©μλκ° λ¨Όμ λ©λͺ¨λ¦¬μμ μ κ±°λμ΄μΌ νλ€. μ΄ λ΄μ©μ΄ λ°λ‘ LIFO λ°©μμ λ§νλ€.
μμ μ΄λ―Έμ§μμ push, popμ΄λΌλ μ©μ΄κ° λμ€λλ° μ€λͺ νμλ©΄ μλμ κ°λ€.
- push : μ€νμ κ°μ λ£λ κΈ°λ₯
- pop : μ€νμμ κ°μ κΊΌλ΄λ κΈ°λ₯
push
pushλ κ°μ λ£λ κΈ°λ₯μ΄λ€. νλ μμͺ½μμ λ°μ΄ν°μ μΆκ°, μμ κ° μΌμ΄λλ€κ³ νλ©΄, μ€νμ νμͺ½μμ λ°μ΄ν°μ μΆκ°, μμ κ° μΌμ΄λλ€.
μμ κ·Έλ¦Όμ²λΌ 1μ΄λΌλ κ°μ μ€νμ pushνλ€κ³ νλ©΄ 맨 μ λΆλΆμ ν΅ν΄μ κ°μ΄ μΆκ°λλ€. μ΄λ₯Ό μλ° μ½λλ‘ ννν΄λ³΄λλ‘ νμ.
μλ°μμλ 컬λ μ νλ μμν¬μ μ€ν μλ£κ΅¬μ‘°λ₯Ό μ 곡νκ³ μλ€.
Stack<Integer> stack = new Stack<>();
stack.push(1);
μμ κ°μ΄ μλ°μμ μ 곡νλ μ€ν μλ£κ΅¬μ‘°μ push λ©μλλ₯Ό μ¬μ©νλ©΄ μμ κ·Έλ¦Όκ³Ό κ°μ΄ λμλλ€.
pop
popμ κ°μ λΉΌλ κΈ°λ₯μ΄λ€. μμ μμ 맨 μλΆλΆμμ μμ κ° μΌμ΄λλ€.
pop μμ μλ°μμ λ©μλλ₯Ό μ§μνκ³ μκΈ° λλ¬Έμ μλμ μ½λλ‘ μ¬μ©νλ€.
stack.pop();
//popν κ°μ μ¬μ©νκ³ μΆλ€λ©΄
int temp = stack.pop();
System.out.println(temp);
μ€νμ 맨 μλΆλΆμμ μΆκ°, μμ κ° μ΄λ£¨μ΄μ§κΈ° λλ¬Έμ μΆκ°, μμ λ O(1)μ μκ°λ³΅μ‘λλ₯Ό κ°λλ€. νμ§λ§ κ²μμ κ²°κ΅ κ°μ λͺ¨λ μννμ¬ μ°ΎμμΌνκΈ° λλ¬Έμ O(n)μ μκ°λ³΅μ‘λλ₯Ό κ°λλ€.
μκ°λ³΅μ‘λ
- μΆκ°, μμ : O(1)
- κ²μ : O(n)
'π μλ£κ΅¬μ‘°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλ£κ΅¬μ‘°] 05. ν΄μ¬ ν μ΄λΈ(Hash Table) (0) | 2023.06.19 |
---|---|
[μλ£κ΅¬μ‘°] 04. μ°κ²° 리μ€νΈ(Linked List) (0) | 2023.06.09 |
[μλ£κ΅¬μ‘°] 02. ν(Queue) (0) | 2023.06.01 |
[μλ£κ΅¬μ‘°] 01. λ°°μ΄ (0) | 2023.06.01 |