Algorithm/๐Ÿ“š Concept

[์ž๋ฃŒ๊ตฌ์กฐ] ์Šคํƒ(Stack)๊ณผ ํ(Queue) - ํŒŒ์ด์ฌ(Python)

J1Yun 2021. 7. 11. 00:28
728x90

์Šคํƒ(Stack)

  • ๋‚˜์ค‘์— ๋„ฃ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๋นผ๋Š” ํ›„์ž…์„ ์ถœ(LIFO - Last In First Out) ๊ตฌ์กฐ
  • ex) ๋ฐ•์Šค ์Œ“๊ธฐ, ํŠธ๋Ÿญ์— ๋ฌผ๊ฑด ๋„ฃ๊ธฐ
  • ํŒŒ์ด์ฌ ๊ธฐ๋ณธ ๋ฆฌ์ŠคํŠธ์—์„œ append()์™€ pop() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„

์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ

stack = []

stack.append(1) # stack: [1]
stack.append(2) # stack: [1, 2]
stack.append(3) # stack: [1, 2, 3]
stack.append(4) # stack: [1, 2, 3, 4]

stack.pop() # stack: [1, 2, 3]
stack.pop() # stack: [1, 2]
stack.append(3) # stack: [1, 2, 3]
stack.pop() # stack: [1, 2]

 

 

 

ํ(Queue)

  • ๋จผ์ € ๋„ฃ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๋นผ๋Š” ์„ ์ž…์„ ์ถœ(FIFO - First In First Out) ๊ตฌ์กฐ
  •  ex) ์ž…์žฅ ๋Œ€๊ธฐ์ค„
  • ํŒŒ์ด์ฌ collections ๋ชจ๋“ˆ์—์„œ ์ œ๊ณตํ•˜๋Š” deque ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„

โ€ป deque๋Š” ์Šคํƒ๊ณผ ํ์˜ ์žฅ์ ์„ ๋ชจ๋‘ ์ฑ„ํƒํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š” ์†๋„๊ฐ€ ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•์— ๋น„ํ•ด ํšจ์œจ์ ์ด๋ฉฐ queue ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๋‹ค.

ํ ์ž๋ฃŒ๊ตฌ์กฐ

from collections import deque

queue = deque()

queue.append(1) # queue: [1]
queue.append(2) # queue: [1, 2]
queue.append(3) # queue: [1, 2, 3]
queue.append(4) # queue: [1, 2, 3, 4]

queue.popleft() # queue: [2, 3, 4]
queue.popleft() # queue: [3, 4]
queue.append(5) # queue: [3, 4, 5]
queue.popleft() # queue: [4, 5]
728x90