Algorithm/Python

[Python] 자료ꡬ쑰 - μŠ€νƒ, 큐

ν•˜μ§±. 2024. 3. 12. 23:26
728x90

πŸ’‘ μžλ£Œκ΅¬μ‘°λž€? 데이터λ₯Ό ν‘œν˜„ν•˜κ³  μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ ꡬ쑰.

 

κ·Έ 쀑 μŠ€νƒκ³Ό νλŠ” 자료ꡬ쑰의 κ°œλ…μœΌλ‘œ λ‹€μŒμ˜ 두 핡심적인 ν•¨μˆ˜λ‘œ κ΅¬μ„±λœλ‹€.

βœ… μ‚½μž… (Push) : 데이터λ₯Ό μ‚½μž…ν•œλ‹€.
βœ… μ‚­μ œ (Pop) : 데이터λ₯Ό μ‚­μ œν•œλ‹€. 

 

✏️ μŠ€νƒ Stack

βœ”οΈ μ„ μž…ν›„μΆœ (First In Last Out)

βœ”οΈ λ°•μŠ€ μŒ“κΈ° ➑️ μ•„λž˜μ— μžˆλŠ” λ°•μŠ€λ₯Ό 치우기 μœ„ν•΄μ„œ μœ„μ— μžˆλŠ” λ°•μŠ€λ₯Ό λ¨Όμ € λ‚΄λ €μ•Ό ν•œλ‹€.

 

μ΄ˆκΈ°λ‹¨κ³„

 

 

μ‚½μž… (5)

5

 

μ‚½μž… (2)

5 2

 

μ‚½μž… (3)

5 2 3

 

μ‚­μ œ

5 2

 

μ‚½μž… (7)

5 2 7

 

μ‚­μ œ

5 2

 

파이썬 μ½”λ“œ

stack = []

stack.append(5)
stack.append(2)
stack.append(3)
stack.pop()
stack.append(7)
stack.pop()

print(stack)	   # [5, 2]
print(stack[::-1]) # [2, 5]

 

λ³„λ„μ˜ 라이브러리λ₯Ό μ‚¬μš©ν•  ν•„μš” μ—†λ‹€. append()와 pop() λ©”μ„œλ“œλ₯Ό μ‚¬μš©.

 

✏️ 큐 Queue

βœ”οΈ μ„ μž…μ„ μΆœ First In Fist Out

βœ”οΈ λŒ€κΈ°μ€„ ➑️ λ¨Όμ € 온 μ‚¬λžŒμ΄ λ¨Όμ € λ“€μ–΄κ°„λ‹€

 

μ΄ˆκΈ°λ‹¨κ³„

 

 

μ‚½μž… (5)

5

 

μ‚½μž… (2)

5 2

 

μ‚½μž… (3)

5 2 3

 

μ‚­μ œ

2 3

 

μ‚½μž… (7)

2 3 7

 

μ‚­μ œ

3 7

 

파이썬 μ½”λ“œ

from collections import deque

queue = deque()

queue.append(5)
queue.append(2)
queue.append(3)
queue.popleft()
queue.append(7)
queue.popleft()

print(queue)	# deque([3, 7])
queue.reverse()
print(queue)	# deque([3, 7])
list(queue)		# [3, 7]

 

collections λͺ¨λ“ˆμ—μ„œ μ œκ³΅ν•˜λŠ” deque 자료ꡬ쑰 ν™œμš©. 

dequeλŠ” 데이터λ₯Ό λ„£κ³  λΉΌλŠ” 속도가 리슀트 μžλ£Œν˜•μ— λΉ„ν•΄  효율적이며 queue λΌμ΄λΈŒλŸ¬λ¦¬λ³΄λ‹€ κ°„λ‹¨ν•˜λ‹€.

728x90