๐Ÿ“–Queue

๐Ÿ“–Priority Queue

์ผ๋ฐ˜ queue์ฒ˜๋Ÿผ FIFO ํ˜•์‹์ด ์•„๋‹ˆ๋ผ, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ

๐Ÿ“–ํŠน์ง•

  • ๋ชจ๋“  ๊ฐ’์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์กด์žฌ
  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฐ’์ด ๋จผ์ € ๋‚˜๊ฐ€๋Š” ํ˜•ํƒœ
  • Heap์œผ๋กœ ๊ตฌํ˜„ ์‹œ O(logn)์„ ๋ณด์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ผ๋ฐ˜์ ์œผ๋กœ Heap์„ ํ†ตํ•ด ๊ตฌํ˜„
  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์€ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด queue์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋จผ์ € ๋‚˜๊ฐ

๐Ÿ“–์—ฐ์‚ฐ

  • enqueue((k, v)) : ์šฐ์„ ์ˆœ์œ„ ํ์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
  • dequeue() : ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  return
  • isEmpty() : ์šฐ์„ ์ˆœ์œ„ ํ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด True, ์žˆ์œผ๋ฉด False return
  • size() : ์šฐ์„ ์ˆœ์œ„ ํ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ return
  • peek() : ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ return

๐Ÿ“–์‚ฌ์šฉ

  • CPU ์Šค์ผ€์ค„๋ง
  • ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ“–์‹œ๊ฐ„๋ณต์žก๋„

๊ตฌํ˜„ ๋ฐฉ๋ฒ•enqueue()dequeue()
Unsorted ArrayO(1)O(n)
Unsorted Linked ListO(1)O(n)
Sorted ArrayO(n)O(1)
Sorted Linked ListO(n)O(1)
HeapO(logn)O(logn)