Queue
queue
๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ํ์์ ์๋ฃ๊ตฌ์กฐ
์ ์ ์ ์ถ, FIFO, first in first out
์ ๊ตฌ์ ์ถ๊ตฌ๊ฐ ๋ชจ๋ ๋ซ๋ ค์๋ ํฐ๋๊ณผ ๊ฐ์ ํํ๋ก ์๊ฐํ
์) ์ํ๋๊ธฐ์ค
ํ ์ชฝ ๋์ front๋ก ์ ํ์ฌ ์ญ์ ์ฐ์ฐ๋ง ์ํํ๋ค. -> enqueue
๋ค๋ฅธ ์ชฝ ๋์ rear๋ก ์ ํ์ฌ ์ฝ์ ์ฐ์ฐ๋ง ์ํํ๋ค. -> dequeue
๋ฐ์ดํฐ ์ฝ์ ์ ์๋ full ์ธ์ง ํ์ธ, ์ญ์ ์ ์๋ empty ์ธ์ง ํ์ธํด์ผํ๋ค.
์ฅ๋จ์
๋ฐ์ดํฐ์ ์ ๊ทผ, ์ฝ์ , ์ญ์ ๊ฐ ๋น ๋ฅด๋ค.
์ค๊ฐ์ ์๋ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ด ๋ถ๊ฐํ๋ค.
์์
๊ทธ๋ํ์ ๋์ด ์ฐ์ ํ์ (BFS) ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
์ปดํจํฐ ๋ฒํผ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ๋ง๊ตฌ ์ ๋ ฅ๋์์ผ๋ ์ฒ๋ฆฌ๋ฅผ ๋ชปํ ๋, ์ผ๋จ ๋ฒํผ ํ์ ์ผ๋ ฌ๋ก ๋๊ธฐ๋ฅผ ์์ผ๋๋๋ค.
ํ๋ฆฐํธ์ ๋๊ธฐ์ด์๋ ์ฌ์ฉ๋๋ค.
์ํ์ ๋ฌด, ์ฝ์ผํฐ ๊ณ ๊ฐ ๋๊ธฐ์๊ฐ, ํ๋ก์ธ์ค ๊ด๋ฆฌ
๊ตฌํ
๋ฆฌ์คํธ๋ก ๊ตฌํ์ ๊ฐ๋ฅํ๋, ์๊ฐ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๋ค.
Queue ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ง์ํจ: LinkedList
java.util.Queue
,java.util.LinkedList
import ํ๋ฉด ์ฌ์ฉํ ์ ์๋ค.
์ง์ ๋งค์๋
add : ์ถ๊ฐ
offer : ์ถ๊ฐ
poll : ์ฒซ๋ฒ์งธ ์์ ์ ๊ฑฐ, queue ๋น์ด์๋ค๋ฉด null
remove : remove ์ฒซ๋ฒ์งธ ์์ ์ ๊ฑฐ
clear : ํ ์ ์ฒด ์ ๊ฑฐ
peek : ๋งจ ์ฒซ๋ฒ์งธ ์์ ์กฐํ
์์
์ฐ์ ์์ ํ - priority queue
์ ํ ํ์๋ ๋ค๋ฅด๊ฒ ์ฐ์ ์์๊ฐ ๋์ ์์์ผ์๋ก ๋จผ์ ์ญ์ ๋๋ค.
๋ง์ฝ์ ์ฐ์ ์์๊ฐ ๊ฐ๋ค๋ฉด, ์ฝ์ ๋ ์์๋ฅผ ๋ฐ๋ฅธ๋ค.
์ฝ์ ๋ฐ ์ญ์ ์, ์ฐ์ ์์์ ๋ฐ๋ผ์ ์์๋ค์ ์ ๋ ฌํด์ผํ๋ค. ๋ฐ๋ผ์ ํ ์๋ฃ๊ตฌ์กฐ๋ก ๊ตฌํ๋๋ค. -> Heap์ฐธ๊ณ
์์
์๊ธ์ค์์ ์๊ธํ์๊ฐ ์ฐ์ ์์๊ฐ ๋์์ ๋จผ์ ์ง๋ฃ๋ฐ๋ ํ์๊ฐ ๋ค๋ก ๋ฐ๋ฆฌ๋ ๊ฒฝ์ฐ
์๊ฐ ๋ณต์ก๋ : ํ์ผ๋ก ๊ตฌํํ๋ค๋ฉด,
์ฝ์ ๊ณผ ์ญ์ : O(logN)
์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ์์๋ฅผ ํ์ํ ๋์๋ O(1)
์ํ ํ - circular queue, ring buffer
ํ๋ ์ฌ์ด์ฆ๊ฐ ๊ณ ์ ๋์ด์๊ณ ๋ฐ์ดํฐ ์ฝ์ ๊ณผ ์ญ์ ์ ๋๋จธ์ง ์์๋ค์ ์ด๋ํ์ง ์๋๋ค. ๊ทธ๋ฌ๋ค๊ฐ ๊ฒฐ๊ตญ index ๊ฐ ๋ง์ง๋ง์ ๊ฐ๋ฆฌํค๊ฒ ๋๋ฉด, ์์ชฝ ๊ณต๊ฐ์ด ํ ํ ๋น์ด์๋๋ผ๋ ๊ทธ๊ฒ์ ์ ๋๋ก ํ์ฉํ์ง ๋ชปํ๊ฒ ๋๋ค.
์ํ ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ํ์ฌ์ ์์๋ค์ ์์ผ๋ก ์ฌ๋ฐฐ์นํ๋ ๋ณ๋์ ์์ ์ ์งํํ๋ค.
์์ ๊ฐ์ด ํ ์ ์ฒด ์ฌ์ด์ฆ๊ฐ 5์ด๊ณ , ํ์ฌ rear ๊ฐ ๋ง์ง๋ง ์ธ๋ฑ์ค์ธ 4๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ค๋ฉด, ๋ค์ enqueue ํ๋ ๊ณผ์ ์์ ์ ์ฒด ์ธ๋ฑ์ค ๋ฒ์๋ฅผ ๋์ด์๋ 5๊ฐ ๋์ด๋ฒ๋ฆฐ๋ค. ์ด๋, ์ด 5๋ฅผ ๋ค์ ์ ์ฒด ํ์ ์ฌ์ด์ฆ๋งํผ ๋๋๊ฒ ๋๋ฉด, (4+1) % 5 = 0์ด ๋๋ค. ์ธ๋ฑ์ค๊ฐ ๋ค์ ์ฒ์์ผ๋ก ๋์๊ฐ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ฐธ๊ณ
Last updated