
π§© μ€ν(Stack): λ°μ΄ν°λ₯Ό μμ°¨μ μΌλ‘ μμ μ μ¬λ λ°μ΄ν°λ‘λΆν° κΊΌλ΄ μΈ μ μλλ‘ μλ£λ₯Ό μ 리ν΄λμ νν
Push : λ°μ΄ν°λ₯Ό λ£λ μμ
+ Pop : λ°μ΄ν°λ₯Ό λΉΌλ μμ
π μΉλΈλΌμ°μ λ€λ‘κ°κΈ°
π§© μ€νμλ£κ΅¬μ‘°: λ°μ΄ν°μ μΆμ 곡κ°μ΄ νλμΈ λ§ννν
TOP| κ΅¬λΆ | κ²°κ³Ό |
|---|---|
| μ€ν Empty β μλ£κΊΌλ | μ€νμΈλνλ‘μ° Error λ°μ |
| μ€ν Full β μλ£κΊΌλ | μ€νμ€λ²νλ‘μ° Error λ°μ |
Push : λ°μ΄ν°λ₯Ό λ£λ μμ
+ Pop : λ°μ΄ν°λ₯Ό λΉΌλ μμ

π μ€νμ μ
>>> stack = [None, None, None] # λ―Έλ¦¬κ³΅κ° μ§μ
>>> top = -1 # μ΄κΉκ°
π 첫λ²μ§Έλ°μ΄ν°
>>> top += 1 # pushν λ λ°λμ top + 1
>>> stack[top] = "cuk.edu" # λ°μ΄ν°μ½μ
π λλ²μ§Έλ°μ΄ν°
>>> top += 1
>>> stack[top] = "naver.com"
π μΈλ²μ§Έλ°μ΄ν°
>>> top += 1
>>> stack[top] = "google.com"
π stack μΆλ ₯
>>> for i in range(len(stack)-1, -1, -1):
print(stack[i])
# google.com naver.com cuk.edu
π top[2] pop
>>> data = stack[top] # νμ¬μ topμμ μΆμΆ, top = 2
>>> stack[top] = None # popλ λ°μ΄ν° -> None μ²λ¦¬
>>> top -= 1
>>> print(data) # google.com
π top[1] pop
>>> data = stack[top] # νμ¬μ topμμ μΆμΆ, top = 1
>>> stack[top] = None # popλ λ°μ΄ν° -> None μ²λ¦¬
>>> top -= 1
>>> print(data) # naver.com
π top[0] pop
>>> data = stack[top] # νμ¬μ topμμ μΆμΆ, top = 0
>>> stack[top] = None # popλ λ°μ΄ν° -> None μ²λ¦¬
>>> top -= 1
>>> print(data) # cuk.edu
>>> SIZE = 3 # μ€νν¬κΈ°μ§μ
>>> stack = [None for _ in range(SIZE)]
>>> top = -1
π μ€νμ΄ κ½ μ°Όλμ§ νμΈνλ ν¨μ
>>> def isStackFull():
if (top >= SIZE - 1):
return True # μ€νκ½μ°Έ
else:
return False # μ€νμ¬μ
π λ°μ΄ν°λ₯Ό μ½μ
νλ ν¨μ
>>> def push(data):
global SIZE, stack, top
if (isStackFull()):
print("μ€νμ΄ κ½ μ°Όμ΅λλ€.")
return
top += 1
stack[top] = data
π μ€νμ΄ λΉμλμ§ νμΈνλ ν¨μ
>>> def isStackEmpty():
if (top == -1):
return True
else:
return False
π μ€νμμ λ°μ΄ν°λ₯Ό μΆμΆνλ ν¨μ
>>> def pop():
global SIZE, stack, top
if (isStackEmpty()):
print("μ€νμ΄ λΉμμ΅λλ€.")
return None
data = stack[top]
stack[top] = None
top -= 1
return data
π§© Peek: top μμΉ λ°μ΄ν° νμΈλ§ νκ³ μ€νμ κ·Έλλ‘ λλ κ²
>>> def peek():
if (isStackEmpty()):
print("μ€νμ΄ λΉμ΄μμ΅λλ€")
return None
return stack[top]
| νλͺ© | μ‘°ν | μ½μ | μμ |
|---|---|---|---|
| μ€ν | O(n) | O(1) | O(1) |