πŸ“¦ Data Structure

[자료ꡬ쑰] μŠ€νƒ(Stack) (python 파이썬)

μ œλ΄‰μ•„ 2023. 8. 20. 17:36

μŠ€νƒ(Stack)

μŠ€νƒμ€ κ°€μž₯ λ‚˜μ€‘μ— 넣은(push) 데이터λ₯Ό κ°€μž₯ λ¨Όμ € κΊΌλ‚΄λŠ”(pop) μžλ£Œκ΅¬μ‘°λ‹€.

이런 ꡬ쑰λ₯Ό Last In First Out(ν›„μž…μ„ μΆœ, LIFO) λ˜λŠ” First In Last Out(μ„ μž…ν›„μΆœ, FILO)라고 ν•œλ‹€.

ν”νžˆ 택배 νŠΈλŸ­μ— μžˆλŠ” 택배 μƒμžλ“€μ„ μƒκ°ν•˜λ©΄ λœλ‹€. κ°€μž₯ λ‚˜μ€‘μ— 넣은 택배 μƒμžλΆ€ν„° λ¨Όμ € κΊΌλ‚΄λ‹ˆκΉŒ

좜처: μœ„ν‚€ν”Όλ””μ•„

μŠ€νƒμ˜ μ—°μ‚°

- push(): μŠ€νƒμ΄ 가득 μ°ΌλŠ”μ§€(isFull) ν™•μΈν•˜κ³  가득 μ°¨μžˆμ§€ μ•ŠμœΌλ©΄ top λ‹€μŒ μœ„μΉ˜μ— 데이터 μ‚½μž….

- pop(): μŠ€νƒμ΄ λΉ„μ–΄μžˆλŠ”μ§€(isEmpty) ν™•μΈν•˜κ³  λΉ„μ–΄μžˆμ§€ μ•ŠμœΌλ©΄ topμœ„μΉ˜μ— μžˆλŠ” 데이터 return ν•˜κ³  μ‚­μ œ.

- peek():μŠ€νƒμ˜ top에 μžˆλŠ” 데이터 return.

- isFull(): μŠ€νƒμ΄ 가득 μ°ΌλŠ”μ§€ 확인. μŠ€νƒμ˜ μ‚¬μ΄μ¦ˆμ™€ top의 μœ„μΉ˜κ°€ κ°™λ‹€λ©΄ return 1. μ•„λ‹ˆλ©΄ return 0.

- isEmpty(): μŠ€νƒμ΄ λΉ„μ–΄μžˆλŠ”μ§€ 확인. top의 μœ„μΉ˜κ°€ -1이면 return 1. μ•„λ‹ˆλ©΄ return 0. 

μŠ€νƒ in 파이썬

νŒŒμ΄μ¬μ—μ„œ μŠ€νƒμ„ μ‚¬μš©ν•  λ•Œ λ”°λ‘œ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ ν•„μš” μ—†λ‹€. κ·Έλƒ₯ λ¦¬μŠ€νŠΈμ— μžˆλŠ” appendλž‘ popλ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

λ‘˜ λ‹€ μ‹œκ°„λ³΅μž‘λ„λŠ” O(1)이닀. 

 

λ”°λ‘œ classλ₯Ό λ§Œλ“€μ–΄ κ΅¬ν˜„ν•  수 μžˆμ§€λ§Œ, κ°„λ‹¨ν•˜κ²Œ list둜 κ΅¬ν˜„ν•΄ λ³Ό 수 μžˆλ‹€.

 

예)

stack = [] #빈 리슀트 μ„ μ–Έ

stack.append(2) # push
stack.append(3) # push
stack.append(5) # push

print(stack) # [2, 3, 5]

print(stack.pop()) # 5

print(stack) # [2, 3]

# peekκ³Ό 같은 κΈ°λŠ₯. top에 μžˆλŠ” μš”μ†Œλ₯Ό return ν•œλ‹€.
print(stack[-1]) # 3

 

μ°Έκ³ 

https://www.tutorialspoint.com/data_structures_algorithms/stack_algorithm.htm