κ°λ
μλ£ κ°μ μ°κ²° ννμ λ°λΌ μλ£κ΅¬μ‘°μ μ’ λ₯λ₯Ό ꡬλ³νμ λ, μλ£λ₯Ό μμ°¨μ μΌλ‘ λμ΄ν ννλ₯Ό μ ν μλ£κ΅¬μ‘°λΌκ³ νλ€. νλμ μλ£ λ€μ λ€λ₯Έ νλμ μλ£κ° μ€λ νμμΌλ‘ μ ν μλ£κ΅¬μ‘° μμμλ κΈ°λ³Έ, μ νμΌλ‘ λλλ€. μ΄ κΈμμλ μ ν μ ν μλ£κ΅¬μ‘°μ μνλ μ€ν, ν, λ±μ λν΄ μ 리νλ€.
μ€ν(Stack)
μ€ν, ν, λ±μ κ°μ₯ ν° μ°¨μ΄μ μ λ°μ΄ν°μ μΆμ λ°©ν₯μ΄λ€. μ€νμ λ°μ΄ν°κ° λ€μ΄μ€κ³ λκ°λ κΈΈμ΄ ν λ°©ν₯ λ°μ μμ΄μ λ°μ΄ν°λ₯Ό μ€νμμ λΊ κ²½μ° μμ μ¬μ§κ³Ό κ°μ΄ λ€μ΄μ¨ κ³³μΌλ‘ λκ°κ² λλ€. μ± μ μλ κ²μ²λΌ μλμͺ½λΆν° κ°μ΄ 차곑차곑 μμ΄κΈ° λλ¬Έμ λμ€μ λ€μ΄μ¨ λ°μ΄ν°κ° λ¨Όμ λκ°λ LIFO(Last In First Out, νμ μ μΆ) ꡬ쑰μ΄λ€. μ μ΄λ―Έμ§μ²λΌ μΈλ‘ ννλ‘ μ€νμ μ€λͺ νλ κ·Έλ¦Όμ΄ κ΅μ₯ν λ§μλ°, λ°°μ΄λ‘ μ€νμ ꡬννκ² λλ©΄ κ°λ‘ ννλ‘ νννλ λ°°μ΄κ³Ό μ μ΄λ―Έμ§κ° μ‘°κΈ ν·κ°λ¦΄ μ μλ€. (λ μ¬μ€ λ΄κ° ν·κ°λ ΈκΈ° λλ¬Έμ π )
κ²°λ‘ λΆν° λ§νλ©΄ λ°°μ΄μμλ μΈλ±μ€κ° ν΄μλ‘ λμ€μ λ€μ΄μ¨ μμκ° λλ€.
stack = []
stack.append(1)
stack.append(2)
stack.append(3)
stack.append(4)
stack.append(5)
print("- - - - - λ°μ΄ν° μ½μ
(push) - - - - -")
print(stack)
print("\n")
print("- - - - - λ°μ΄ν° μμ (pop) - - - - -\n")
while len(stack) != 0:
v = stack.pop()
print(v)
κ°λ λ§ κ΅¬νν΄λ³Έ μ μ½λμ μ€ν κ²°κ³Όλ
π‘ queue λͺ¨λ(import queue)μ LifoQueue()λ₯Ό μ΄μ©ν΄μ μ€νμ ꡬννλ λ°©λ²λ μλ€.
ν(Queue)
νλ μ ꡬμ μΆκ΅¬κ° λ€λ₯΄λ€. νμ 맨 λμΈ Back(λλ Rear)μΌλ‘ EnqueueλΌλ λ°μ΄ν° μ λ ₯ ν¨μλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μΆκ°νκ³ Frontμμ DequeueλΌλ λ°μ΄ν° μμ ν¨μλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ κ±°νλ€. μ€νκ³Ό λ€λ₯Έ μ μ λ€μ΄μ¨ μμλλ‘ λ°μ΄ν°κ° λκ°κΈ° λλ¬Έμ FIFO(First In First Out, μ μ μ μΆ) ꡬ쑰λΌλ κ²μ΄λ€. νμ΄μ¬μμλ collections λͺ¨λμ λ΄μ₯λ dequeλ queue(μ¬μ©λ²μ μ€νκ³Ό λμΌ)μ Queue()λ₯Ό μ΄μ©ν΄μ νλ₯Ό ꡬνν μλ μλ€.
from collections import deque
queue = []
# deque μ¬μ© X
queue.append(1)
queue.append(2)
queue.append(3)
queue.append(4)
queue.append(5)
print("- - - - - λ°μ΄ν° μ½μ
(enqueue) - - - - -")
print(queue)
print("\n")
print("- - - - - λ°μ΄ν° μμ (dequeue) - - - - -")
while len(queue) != 0:
# 0λ² μΈλ±μ€λ₯Ό pop
v = queue.pop(0)
print(v)
print()
# deque μ¬μ©
usingDeque = deque([1, 2, 3, 4, 5])
print("- - - - - λ°μ΄ν° μμ (dequeue) - - - - -")
while len(usingDeque) != 0:
v = usingDeque.popleft()
print(v)
μ€νκ³Ό λμΌνκ² κ°λ λ§ κ°λ¨νκ² κ΅¬νν μ½λμ μ€ν κ²°κ³Όλ
π‘ μμμ μ€λͺ ν νλ κ°μ₯ κΈ°λ³Έμ μΈ μ ν νμΈλ° μ ν νμ λ¨μ μ 보μνκΈ° μν μν ν(Circular Queue)λ λ°μ΄ν°κ° μ λ ¬λ μνμΌ λ μ¬μ©νλ μ°μ μμ ν(Priority Queue)λ μ‘΄μ¬νλ€.
λ±(Double-ended queue, Deque)
λ°μ΄ν° μ½μ /μμ κ° μλ€μμ λ€ κ°λ₯νλ€. μ€νκ³Ό νλ₯Ό ν©μ³λμ ννλ‘ μ€νμ²λΌ μΈ μλ μκ³ νμ²λΌ μΈ μλ μλ€. λ°μ΄ν° μ½μ /μμ μ μκ° λ³΅μ‘λκ° O(1)μ΄κΈ° λλ¬Έμ μ°μ° μλκ° λΉ λ₯΄λ€. ν¬κΈ°κ° κ°λ³μ μ΄κΈ° λλ¬Έμ μ μ₯ν λ°μ΄ν° κ°μλ₯Ό λͺ¨λ₯Ό λμλ μ¬μ©ν μ μλ€λ μ₯μ λ μλ€. collections λͺ¨λμ deque κ°μ²΄λ₯Ό μ΄μ©ν΄ ꡬνν μ μκ³ μ¬μ©ν μ μλ λ©μλλ μλμ κ°λ€.
κ°κ°μ λ©μλμ λν μμΈν μ€λͺ μ μ¬κΈ°μ μ λμμλ€.
'Computer Science > DS & Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Shortest Path Algorithm: 벨λ§-ν¬λ μκ³ λ¦¬μ¦ (0) | 2024.11.25 |
---|---|
Divide and Conquer: λΆν μ 볡 - ν΅ μ λ ¬ (0) | 2021.04.18 |
Divide and Conquer: λΆν μ 볡 - μ΄λΆνμ, ν©λ³μ λ ¬ (0) | 2021.04.16 |
Greedy: νμλ² (0) | 2021.02.23 |
[μ’ λ§λΆ] μκ³ λ¦¬μ¦ μ€κ³ ν¨λ¬λ€μ - 무μνκ² νκΈ° (0) | 2020.11.07 |