๐Ÿ“ฆ Data Structure

[์ž๋ฃŒ๊ตฌ์กฐ] ํ(Queue) (python ํŒŒ์ด์ฌ)

์ œ๋ด‰์•„ 2023. 8. 20. 19:09

ํ(Queue)

ํ๋Š” ๊ฐ€์žฅ ๋จผ์ € ๋„ฃ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜ค๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค.

์Šคํƒ์ด๋ž‘ ๋น„๊ตํ•˜๋ฉด ์Šคํƒ์€ ์ž…๊ตฌ๊ฐ€ 1๊ฐœ์ธ ํ†ต ๊ฐ™์€ ๊ตฌ์กฐ์ด๊ณ , ํ๋Š” ํ„ฐ๋„ ๊ฐ™์€ ๊ตฌ์กฐ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ์ฐจ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค.

์ด๋Ÿฐ ๊ตฌ์กฐ๋ฅผ First In First Out(FIFO, ์ผ๋ช… ํ”ผํฌ)๋ผ๊ณ  ํ•œ๋‹ค.

์ถœ์ฒ˜: ์œ„ํ‚คํ”ผ๋””์•„

ํ์—๋Š” ๋‘๊ฐœ์˜ ํฌ์ธํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํ•˜๋‚˜๋Š” rear, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” front๋‹ค. 

rear์—์„œ๋Š” Enqueue, front์—์„œ๋Š” dequeue์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค.

 

ํ์˜ ์—ฐ์‚ฐ

- enqueue(): ํ๊ฐ€ ๊ฐ€๋“์ฐผ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ฐ€๋“์ฐจ์žˆ์ง€ ์•Š์œผ๋ฉด rear ์œ„์น˜์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž….

- dequeue(): ํ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด front์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ returnํ•˜๊ณ  remove.

- peek(): ํ์˜ front ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ return. 

- isFull(): ํ๊ฐ€ ๊ฐ€๋“ ์ฐผ๋Š”์ง€ ํ™•์ธ. ๊ฐ€๋“ ์ฐผ๋‹ค๋ฉด return 1. ์•„๋‹ˆ๋ฉด return 0.

- isEmpty(): ํ๊ฐ€ ๋น„์–ด ์žˆ๋Š”์ง€ ํ™•์ธ. ๋น„์–ด ์žˆ์œผ๋ฉด return 1. ์•„๋‹ˆ๋ฉด return 0.

 

ํ in ํŒŒ์ด์ฌ

ํŒŒ์ด์ฌ์—์„œ๋Š” queue๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ๊ทผ๋ฐ ๋ณดํ†ต deque๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•œ๋‹ค. deque๊ฐ€ ์ข‹๋‹คbb

 

์˜ˆ)

from collections import deque

Queue = deque()

Queue.appendleft(2) # enqueue
Queue.appendleft(3) # enqueue
Queue.appendleft(5) # enqueue
Queue.appendleft(8) # enqueue

print(Queue) # deque([8, 5, 3, 2])

print(Queue.pop()) # 2 / dequeue
print(Queue.pop()) # 3 / dequeue

print(Queue) # deque([8, 5])

print(Queue[-1]) # 5 / peek