-
Notifications
You must be signed in to change notification settings - Fork 0
๐งพ Queue
- ์ ์ ์ ์ถ, FIFO ๊ตฌ์กฐ(First In First Out)
- ์ฝ์ ํ๋ ์ฐ์ฐ : Enqueue(Add)
- ๊บผ๋ด๋ ์ฐ์ฐ : Dequeue(Poll)

๋จผ์ ๋ค์ด์จ ๊ฒ์ ๋จผ์ ์ฒ๋ฆฌํ๋ ํ์ ๋์ ๋ฐฉ์์ ์ฃผ๋ก ์ฌ๋ฌ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ๋ฐ์ํ ์์๋๋ก ์ฒ๋ฆฌํ ๋ ํ์ฉ๋จ
- ์์ ๋๊ธฐ์ด : ๋คํธ์ํฌ ํต์ ์ ํ ๋ ๋ค์์ ํด๋ผ์ด์ธํธ์์ ์๋ฒ์ ์์ ์ ์์ฒญํ๋ฉด ์๋ฒ๋ ์์ฒญ์ด ๋ค์ด์จ ์์๋๋ก ์์ ์ ์ฒ๋ฆฌ
- ์ด๋ฒคํธ ์ฒ๋ฆฌ : ์ด๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์์คํ ์์ ์ฌ์ฉ์์ ์ด๋ฒคํธ, ์ฆ ํค๋ณด๋ ์ ๋ ฅ์ด๋ ๋ง์ฐ์ค ์์ง์์ ์ฒ๋ฆฌํ ๋
ADT (Abstract Data Type, ์ถ์ ๋ฐ์ดํฐ ํ์ ) : ๋ฐ์ดํฐ์ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ช ์ํ์ง ์๊ณ , ํด๋น ๋ฐ์ดํฐ๊ฐ ๊ฐ์ ธ์ผ ํ ์ฐ์ฐ๋ค์ ์ ์ ํ ๊ฒ , ๋ฐ์ดํฐ ํ์ ์ด ๊ฐ์ ธ์ผ ํ ๊ธฐ๋ฅ(๋ฉ์๋)๋ค์ ๋ช ์ธ์
| ๊ตฌ๋ถ | ์ ์ | ์ค๋ช |
|---|---|---|
| ์ฐ์ฐ | boolean isFull() | ํ์ ๋ค์ด์๋ ๋ฐ์ดํฐ ๊ฐ์๊ฐ maxsize์ธ์ง ํ์ธ |
| boolean isEmpty() | ํ์ ๋ค์ด์๋ ๋ฐ์ดํฐ๊ฐ ์๋ ์ง ํ์ธ | |
| void add(ItemType item) | ํ์ ๋ฐ์ดํฐ๋ฅผ add | |
| ItemType poll() | ํ์์ ์ต๊ทผ์ add ํ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๊ณ ๋ฐํ | |
| ์ํ | int front | ํ์์ ๊ฐ์ฅ ๋ง์ง๋ง์ pollํ ์์น๋ฅผ ๊ธฐ๋ก |
| int rear | ํ์์ ์ต๊ทผ์ addํ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๊ธฐ๋ก | |
| ItemType data[maxsize] | ํ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฐ์ด, maxsize๊ฐ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ |


1๏ธโฃ isFull() ์ฐ์ฐ์ผ๋ก ํ์ฌ ํ๊ฐ ๊ฐ๋ ์ฐผ๋์ง ํ์ธํ๊ณ ํ๊ฐ ๊ฐ๋ ์ฐจ์ง ์์์ผ๋ฏ๋ก
2๏ธโฃ rear์ +1 ํ ํ rear๊ฐ ๊ฐ๋ฆฌํค๋ ์์น์
3๏ธโฃ 3์ add ํจ (๋ฐ๋๋ก isFull ์ธ ture์ด๋ฉด ๋ฐ์ดํฐ๋ฅผ addํ์ง ์์)

1๏ธโฃ isEmpty() ์ฐ์ฐ์ผ๋ก ํ๊ฐ ๋น์๋์ง ํ์ธ, front์ rear์ ๊ฐ์ด ๊ฐ์์ง ํ์ธํด์ ํ์ ์์๊ฐ ์๋๋ฐ pollํ๋ ๋์์ ๋ฐฉ์งํจ
2๏ธโฃ ๋ง์ฝ ๋น์ด์์ง ์๋ค๋ฉด(isEmpty๊ฐ false) front๋ฅผ +1 ํ๋ฉด front์ rear๊ฐ 0์ผ๋ก ๊ฐ์์ง๊ฒ ๋๊ณ
3๏ธโฃ isEmpty() ์ฐ์ฐ ์ ํ๊ฐ ๋น ๊ฒ(isEmpty๊ฐ true)์ผ๋ก ์ฒ๋ฆฌ๋์ด ์ค์ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๊ฒ์ฒ๋ผ ๊ด๋ฆฌ ๊ฐ๋ฅ
โญ ์ค์ ๋ฐ์ดํฐ๊ฐ ์์ด๋ front==rear ์ด๋ฏ๋ก ๋น ํ๋ก ์๊ฐํ๊ฒ ๋จ

1๏ธโฃ 5๋ฅผ addํ๋ฉด isFull() ์ฐ์ฐ์ ์ํํด ํ๊ฐ ๊ฐ๋ ์ฐผ๋์ง ๊ฒ์ฌํ๊ณ , ๊ฐ๋์ฐจ์ง ์์๋ค๋ฉด add
2๏ธโฃ ๊ณ์ํด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก 6, 8์ addํ๋ฉด front๋ 0, rear์ 3์ด ๋จ

1๏ธโฃ rear๊ฐ 3์ด๋ฏ๋ก maxsize-1๊ณผ ๊ฐ๊ฒ ๋๋ฏ๋ก
2๏ธโฃ isFull() ์ฐ์ฐ์ true์ผ๋ฏ๋ก addํ์ง ๋ชปํ๊ฒ ๋จ
โก๏ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ญ๋น, ํ๋ฅผ ํ ๋ฐฉํฅ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์๊ธฐ ๋๋ฌธ(ํ๋ฅผ ์ํ์ผ๋ก ๊ฐ์ ๊ฐ๋ฅ)
- add ์ฐ์ฐ :
add() - poll ์ฐ์ฐ :
poll()
โadd()๋ฉ์๋ ๋์ offer()๋ฉ์๋๋ ์ฌ์ฉ๊ฐ๋ฅํ์ง๋ง ๋ด๋ถ์ ์ผ๋ก ๋ฉ์๋ ํธ์ถํ์๊ฐ offer๊ฐ 1ํ ๋ ๋ง๊ธฐ ๋๋ฌธ์ add๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ทผ์ํ ์ฐจ์ด๋ก ๋น ๋ฆ
์๋ฐ ์ปฌ๋ ์ ํ๋ ์์ํฌ์์ Queue์ ๊ตฌํ์ฒด๋ก ์ฌ์ฉํ๋ ํด๋์ค๋ ArrayDeque, LinkedList๊ฐ ์์

import java.util.Queue;
import java.util.ArrayDeque;
// ํ๋ฅผ ๊ตฌํํ ArrayDeque ๊ฐ์ฒด ์์ฑ
Queue<Integer> queue = new ArrayDeque<>();
// ํ์ ๋ฐ์ดํฐ ์ถ๊ฐ
queue.add(1);
queue.add(2);
queue.add(3);
// ํ์ ๋งจ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ฉด์ ๋ฐํ
int first = queue.poll();
System.out.println(first); // 1
// ํ์ ๋ฐ์ดํฐ ์ถ๊ฐ
queue.add(4);
queue.add(5);
// ํ์ ๋งจ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ฉด์ ๋ฐํ
first- queue.poll();
System.out.println(first); // 2Deque(Double Ended Queue) ์ ์ ๋์์ ์ฝ์ ๋๋ ์ญ์ ํ ์ ์๋ ํ๋ฅผ ๊ตฌํํ ๊ฒ
- add ์ฐ์ฐ :
add()/addLast() - poll ์ฐ์ฐ :
poll()/pollFirst()

import java.util.ArrayDeque;
// ํ๋ฅผ ๊ตฌํํ ArrayDeque ๊ฐ์ฒด ์์ฑ
ArrayDeque<Integer> queue = new ArrayDeque<>();
// ํ์ ๋ฐ์ดํฐ ์ถ๊ฐ
queue.addLast(1);
queue.addLast(2);
queue.addLast(3);
// ํ์ ๋งจ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ฉด์ ๋ฐํ
int first = queue.pollFirst();
System.out.println(first); // 1
// ํ์ ๋ฐ์ดํฐ ์ถ๊ฐ
queue.addLast(4);
queue.addLast(5);
// ํ์ ๋งจ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ฉด์ ๋ฐํ
first- queue.pollFirst();
System.out.println(first); // 2๐๏ธ๊ฐ๋ ์ ๋ฆฌ
๐๏ธ๋ฌธ์ ํ์ด
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #1829 : ์นด์นด์ค ํ๋ ์ฆ ์ปฌ๋ฌ๋ง๋ถ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #1835 : ๋จ์ฒด์ฌ์ง ์ฐ๊ธฐ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #12900 : 2 x n ํ์ผ๋ง
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #12902 : 3 x n ํ์ผ๋ง
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #12905 : ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ ์ฐพ๊ธฐ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #12909 : ์ฌ๋ฐ๋ฅธ ๊ดํธ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #12978 : ๋ฐฐ๋ฌ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #12985 : ์์ ๋์งํ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #17677 : [1์ฐจ] ๋ด์ค ํด๋ฌ์คํฐ๋ง
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #17679 : [1์ฐจ] ํ๋ ์ฆ4๋ธ๋ก
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #17680 : [1์ฐจ] ์บ์
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #17683 : [3์ฐจ] ๋ฐฉ๊ธ๊ทธ๊ณก
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #17684 : [3์ฐจ] ์์ถ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42576 : ์์ฃผํ์ง ๋ชปํ ์ ์
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42579 : ๋ฒ ์คํธ์จ๋ฒ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42583 : ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42584 : ์ฃผ์๊ฐ๊ฒฉ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42587 : ํ๋ก์ธ์ค
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42586 : ๊ธฐ๋ฅ๊ฐ๋ฐ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42747 : H-Index
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42839 : ์์ ์ฐพ๊ธฐ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42860 : ์กฐ์ด์คํฑ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42862 : ์ฒด์ก๋ณต
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42888 : ์คํ์ฑํ
๋ฐฉ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42892: ๊ธธ ์ฐพ๊ธฐ ๊ฒ์
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42898 : ๋ฑ๊ตฃ๊ธธ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #42889 : ์คํจ์จ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #43162 : ๋คํธ์ํฌ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #43163 : ๋จ์ด ๋ณํ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #59413 : ์
์ ์๊ฐ ๊ตฌํ๊ธฐ(2)
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #64061 : ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #64065 : ํํ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #72410 : ์ ๊ท ์์ด๋ ์ถ์ฒ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #72411 : ๋ฉ๋ด ๋ฆฌ๋ด์ผ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #76502 : ๊ดํธ ํ์ ํ๊ธฐ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #77486 : ๋ค๋จ๊ณ ์นซ์ ํ๋งค
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #81303 : ํ ํธ์ง
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #84512 : ๋ชจ์์ฌ์
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #92334 : ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #131127 : ํ ์ธ ํ์ฌ
-
[ ํ๋ก๊ทธ๋๋จธ์ค ] #159994 : ์นด๋ ๋ญ์น
-
[ etc ] #9 : 10์ง์๋ฅผ 2์ง์๋ก ๋ณํํ๊ธฐ
-
[ etc ] #15 : ์์ธํธ์ค ๋ฌธ์
-
[ etc ] #18 : ๋ ๊ฐ์ ์๋ก ํน์ ๊ฐ ๋ง๋ค๊ธฐ
-
[ LeetCode ] #739 : Daily Temperatures
-
[ LeetCode ] #785 : Is Graph Bipartite?