๐Ÿ“–Queue

๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ queue : ์ค„์„ ์„œ์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š”, ๋Œ€๊ธฐ์ค„

๐Ÿ“ŽLinear Queue

๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์˜ ๋ง‰๋Œ€ ๋ชจ์–‘์œผ๋กœ ๋œ Queue

๐Ÿ“ŽCircular Queue

ํ๋ฅผ ์›ํ˜•(Circular)์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์ฒ˜์Œ๊ณผ ๋์„ ์—ฐ๊ฒฐํ•œ Queue

  • Linear Queue์˜ ๋ฌธ์ œ์ (๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„)์„ ๋ณด์™„

๐Ÿ“ŽDeque

์–‘์ชฝ ๋์—์„œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ Queue

  • Stack(LIFO) + Queue(FIFO) ์˜ ํ˜•ํƒœ

๐Ÿ“ŽPriority Queue

๐Ÿ“–ํŠน์ง•

  • FIFO(First In First Out)์˜ ๊ตฌ์กฐ
  • ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์–‘์ชฝ ๋์—์„œ ์ด๋ฃจ์–ด์ง(๋‹ค๋ฅธ ๋ฐฉํ–ฅ์—์„œ ์ด๋ฃจ์–ด์ง) front: ์ œ๊ฑฐ rear : ์‚ฝ์ž…
  • ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ์ž‘์—…์— ์ ํ•ฉํ•จ

๐Ÿ“–์—ฐ์‚ฐ

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

๐Ÿ“–์‚ฌ์šฉ

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•  ์ƒํ™ฉ : ์€ํ–‰ ์—…๋ฌด, ์ฝœ์„ผํ„ฐ ๊ณ ๊ฐ ๋Œ€๊ธฐ์‹œ๊ฐ„, ํ”„๋ฆฐํ„ฐ ์ธ์‡„ ๋Œ€๊ธฐ์—ด
  • BFS(Breadth-First Search) ๊ตฌํ˜„
  • ์บ์‹œ(Cache) ๊ตฌํ˜„
  • ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ

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

์—ฐ์‚ฐ์‹œ๊ฐ„๋ณต์žก๋„
์‚ฝ์ž…O(1)
์‚ญ์ œO(1)
ํƒ์ƒ‰O(n)