μ€νκ³Ό νλ κ°μ₯ μμ£Ό νμ©λλ μλ£κ΅¬μ‘° μ€ νλμ΄λ€.
β¨ μ€ν(Stack)
λ¨Όμ λ€μ΄μ¨ λ°μ΄ν°κ° λμ€μ λκ°λ νμμ μλ£κ΅¬μ‘°μ΄λ©°, μ μΆκ΅¬κ° νλμ΄λ€.
νμ μ μΆ (LIFO; Last in First Out) μ ꡬ쑰λ₯Ό κ°μ§κ³ μλ€.
μ½μ κ³Ό μμ κ° μΌμ΄λλ μμΉλ₯Ό Top μ΄λΌκ³ νλ€.
λΉμ΄μλ μ€νμμ μμλ₯Ό μΆμΆνλ €κ³ ν λλ stack underflow, μ€νμ΄ λμΉλ κ²½μ°λ stack overflow μ΄λ€.
β¨μ€ν μμ
λͺ¨λ°μΌ νλ©΄μ κ²½μ°, μ¬μ©μκ° νμ¬ λ³΄κ³ μλ νλ©΄μ΄ Top μ΄λ€.
λ€μ νλ©΄ ν΄λ¦ μ, μ νλ©΄μ Stack μ μΆκ°νκ³ μ΄λνλ€.
μ΄μ νλ©΄μΌλ‘ λμκ° μ, νμ¬ νλ©΄μ Stack μμ μ§μ°κ³ μ΄λνλ€.
β¨ ν(Queue)
λ¨Όμ λ€μ΄μ¨ λ°μ΄ν°κ° λ¨Όμ λκ°λ νμμ μλ£κ΅¬μ‘°μ΄λ©°, μ μΆκ΅¬κ° λ³λ ¬νμ¬ λκ°μ΄λ€.
μ μ μ μΆ (FIFO; First in First Out) μ ꡬ쑰λ₯Ό κ°μ§κ³ μλ€.
λ°μ΄ν° μ λ ₯μ enQueue λΌκ³ λΆλ₯΄λ©°, μ λ ₯μ΄ μΌμ΄λλ μμΉλ 꼬리/Rear μ΄λ€.
λ°μ΄ν° μΆλ ₯μ deQueue λΌκ³ λΆλ₯΄λ©°, μΆλ ₯μ΄ μΌμ΄λλ μμΉλ 머리/Front μ΄λ€.
β¨ν μμ
κ²μ λ§€μΉ μμ€ν μ κ²½μ°, deQueueλ‘ μ μ λ€μ΄ μ μ₯νλ€.
μ ν΄μ§ μΈμλ§νΌ μμλλ‘ λμ΄μ 맀μΉμ΄ λλ©°, μ΄λ€μ enQueue λ‘ ν΄μ₯νλ€.
⨠ꡬν (Python)
μ€ν:
stack = [0, 1, 2, 3]
stack.append(4) # λ°μ΄ν° μ½μ
print(stack) # [0, 1, 2, 3, 4]
stack.pop() # 4, λ°μ΄ν° μμ
print(stack) # [0, 1, 2, 3]
# top μμλλ‘ μΆλ ₯νκ³ μΆμ κ²½μ°:
# λ°©λ² 1)
print(stack[::-1]) # 3, 2, 1, 0
# λ°©λ² 2)
stack.reverse()
print(stack) # [3, 2, 1, 0]
ν:
from collections import deque
temp = [0, 1, 2, 3]
queue = deque(temp)
print(queue) # deque([0, 1, 2, 3])
queue.append(4) # λ°μ΄ν° μ½μ
print(queue) # deque([0, 1, 2, 3, 4])
queue.popleft() # 0, λ°μ΄ν° μμ
print(queue) # deque([1, 2, 3, 4])
# λΉμ΄μλ queue λ§λ€κ³ μΆμ κ²½μ°:
queue = deque()
β¨ λ°ν¬(Deque) λ?
Double-ended queueλ‘, python μ Collections λͺ¨λμ μλ κ°μ²΄μ΄λ€.
Stack/queue μκ³ λ¦¬μ¦μ μμ£Ό νμ©λλ€.
queue = deque([0,1,2,3])
# μμλλ©΄ μ’μ μΆκ° λ©μλλ€
# rotate()
queue.rotate(1) # [3, 0, 1, 2]
queue.rotate(2) # [2, 3, 0, 1]
queue.rotate(-1) # [1, 2, 3, 0]
# extend(), extendleft()
queue.extend('ab') # [0, 1, 2, 3, a, b]
queue.extendleft('ab') # [b, a, 0, 1, 2, 3]
# clear()
queue.clear() # []
'π» DEV > Algorithms & Data Structure' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μκ³ λ¦¬μ¦][C++] μΈκ·Έλ¨ΌνΈ νΈλ¦¬ (0) | 2024.03.13 |
---|---|
[μκ³ λ¦¬μ¦][C++] μ°μ μμν, νν (0) | 2024.03.11 |
[μκ³ λ¦¬μ¦][C++] Dijkstra (λ€μ΅μ€νΈλΌ) / μ΅λ¨ κ²½λ‘ νμ (0) | 2024.03.11 |
[Algorithms] μκ°λ³΅μ‘λ (Big-O Notation) λ? (0) | 2021.07.08 |
[Algorithm] κΉμ΄μ°μ νμ(DFS) κ³Ό λλΉμ°μ νμ(BFS) (0) | 2021.06.30 |
λκΈ