πŸ“š Algorithm/πŸ“• Python 문법

[Python 자료ꡬ쑰] Stack(μŠ€νƒ) κ΅¬ν˜„ν•˜κΈ°

yunakim2 2021. 1. 16. 11:05
λ°˜μ‘ν˜•

 

μ˜€λŠ˜μ€ LIFO ꡬ쑰인 Stack을 νŒŒμ΄μ¬μ—μ„œ κ΅¬ν˜„ν•˜λŠ” 방법에 λŒ€ν•΄ ν¬μŠ€νŒ…ν•˜λ €κ³  ν•©λ‹ˆλ‹€!

μŠ€νƒκ³Ό λ°˜λŒ€λ‘œ FIFO ꡬ쑰인 큐에 λŒ€ν•΄ μ•Œκ³ μ‹Άλ‹€λ©΄ !? μ•„λž˜ ν¬μŠ€νŒ…μ„ μ°Έκ³ ν•΄μ£Όμ„Έμš”!

 

[Python 자료ꡬ쑰] Queue (큐) κ΅¬ν˜„ν•˜κΈ°

Queue(큐) ?! νλŠ” FIFO (First - In - First - Out) 둜써 λ¨Όμ € μ‚½μž…λœ item 순으둜 κΊΌλ‚΄μ–΄μ§„λ‹€κ³  μ΄ν•΄ν•˜λ©΄ μ‰¬μšΈκ±° κ°™μŠ΅λ‹ˆλ‹€. 큐의 μ’…λ₯˜μ—λŠ” 순차적인 큐와 μ›ν˜• 큐(μ›ν˜•μœΌλ‘œ 이루어진 Queue)κ°€ μžˆμŠ΅λ‹ˆλ‹€. Python.

yunaaaas.tistory.com

 

 

Stack(μŠ€νƒ) ?!

μŠ€νƒμ€ LIFO(Last - In - First - Out)둜써 κ°€μž₯ λ‚˜μ€‘μ— λ“€μ–΄μ˜¨ μžλ£Œκ°€ κ°€μž₯ λ¨Όμ € 꺼내어진닀라고 μ΄ν•΄ν•˜λ©΄ μ‰½μŠ΅λ‹ˆλ‹€.

 

Pythonμ—μ„œ Stack κ΅¬ν˜„ν•˜κΈ°

Pythonμ—μ„œλŠ” κΈ°λ³Έ 클래슀인 listλ₯Ό 톡해 μŠ€νƒ 자료ꡬ쑰λ₯Ό μ‰½κ²Œ κ΅¬ν˜„ν• μˆ˜μžˆμŠ΅λ‹ˆλ‹€.

 

list pop / push μ‹œκ°„λ³΅μž‘λ„

pop Item list.pop( ) O(1)
push Item list.append(item) O(1)

 

listλ₯Ό μ΄μš©ν•˜μ—¬ Stack κ΅¬ν˜„ν•˜κΈ°

stack - Init

listλŠ” νŒŒμ΄μ¬μ—μ„œ 자주 쓰이기 λ•Œλ¬Έμ— 리슀트 μžλ£Œν˜• 생성은 맀우 μ΅μˆ™ν•˜μ‹€κ±° κ°™μŠ΅λ‹ˆλ‹€.

stack = [] # []
stack = [1,2,3] # [1,2,3]

 

stack - push

μŠ€νƒμ— μ›μ†Œλ₯Ό 넣을 λ•Œμ—λŠ” append λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•΄ 리슀트의 κ°€μž₯ λ§ˆμ§€λ§‰μ— μ›μ†Œλ₯Ό λ„£μœΌμ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

stack = []
stack.append(4) # [4]
stack.append(2) # [4,2]

 

stack - pop

μŠ€νƒμ— μ›μ†Œλ₯Ό μ œκ±°ν•  λ•ŒλŠ” pop λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ 리슀트의 κ°€μž₯ λ§ˆμ§€λ§‰ μ›μ†Œλ₯Ό μ œκ±°ν•©λ‹ˆλ‹€.

μ΄λ•Œ popλ©”μ†Œλ“œμ— μ˜ν•΄ 제거된 μ›μ†Œλ₯Ό 리턴 λ°›μŠ΅λ‹ˆλ‹€.

stack = [1,2,3,4]
top = stack.pop() # stack [1,2,3]

print(top) # 4

 

stack - top

μŠ€νƒμ—μ„œ μ›μ†Œλ₯Ό μ œκ±°ν•˜μ§€ μ•Šκ³  κ°€μ Έμ˜€κΈ°λ§Œ ν•  λ•Œμ—λŠ” [-1]을 μ΄μš©ν•˜μ—¬ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

stack = [1,2,3,4]
top = stack[-1]# 4 , stack [1,2,3,4]

print(top) # 4

 

 

 

μŠ€νƒμ„ κ΅¬ν˜„ν•  수 μžˆλŠ” 리슀트λ₯Ό μžμ„Έν•˜κ²Œ μ•Œκ³ μ‹Άλ‹€λ©΄!? μ•„λž˜ ν¬μŠ€νŒ…κΈ€μ„ μ°Έκ³ ν•΄μ£Όμ„Έμš”!

 

리슀트(List)

νŒŒμ΄μ¬μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” μžλ£Œν˜•μΈ 리슀트(List)에 λŒ€ν•΄ κ°„λ‹¨νžˆ μ •λ¦¬ν•΄λ³΄κ³ μž ν•©λ‹ˆλ‹€. 리슀트의 λͺ‡λͺ‡ κΈ°λŠ₯듀에 λŒ€ν•΄μ„œ μ†Œκ°œν•΄λ³Όκ²Œμš”! πŸ‘€ List 인덱싱/μŠ¬λΌμ΄μ‹± κΈ°λŠ₯ λ¦¬μŠ€νŠΈμ—μ„œ μ›ν•˜λŠ” κ°’

yunaaaas.tistory.com

 

λ°˜μ‘ν˜•