Deep_Dev
article thumbnail

โœ… Queue

Queue : ์ค„์„ ์ง€์–ด์„œ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

ํ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์Œ“์•„๋‘๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์Šคํƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ, FIFO ( First In First Out )์˜ ํ˜•ํƒœ์ด๋‹ค. 

์ฆ‰, ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค.

 

 

 

๐Ÿ’กQueue์˜ ํŠน์ง•

1. ๋จผ์ € ๋“ค์–ด๊ฐ„ ์ž๋ฃŒ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” FIFO ๊ตฌ์กฐ

2. ํ๋Š” ํ•œ์ชฝ ๋์€ front๋กœ ์นญํ•˜์—ฌ ์‚ญ์ œ ์—ฐ์‚ฐ๋งŒ ์ˆ˜ํ–‰

3. ๋‹ค๋ฅธ ํ•œ์ชฝ ๋์€ rear๋กœ ์นญํ•˜์—ฌ ์‚ฝ์ž… ์—ฐ์‚ฐ๋งŒ ์ˆ˜ํ–‰

4. ๊ทธ๋ž˜ํ”„์˜ ๋„“์ด ์šฐ์„  ํƒ์ƒ‰(BFS)์—์„œ ์‚ฌ์šฉ

5. ์ปดํ“จํ„ฐ ๋ฒ„ํผ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ, ๋งˆ๊ตฌ ์ž…๋ ฅ์ด ๋˜์—ˆ์œผ๋‚˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•  ๋•Œ, ๋ฒ„ํผ(ํ)๋ฅผ ๋งŒ๋“ค์–ด ๋Œ€๊ธฐ ์‹œํ‚ด

 

 

Queue ์‚ฌ์šฉ๋ฒ•

Queue ์„ ์–ธ

import java.util.LinkedList;
import java.util.Queue;
Queue<Integer> queue = new LinkedList<>(); // intํ˜• queue ์„ ์–ธ, linkedlist ์ด์šฉ
Queue<String> queue = new LinkedList<>();  // Stringํ˜• queue ์„ ์–ธ, linkedlist ์ด์šฉ

์ž๋ฐ”์—์„œ ํ๋Š” LinkedList๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— Queue์™€ LinkedList๊ฐ€ ๋‹ค import ๋˜์–ด ์žˆ์–ด์•ผ ํ•จ.

Queue<Element> queue = new LinkedList<>() ๋กœ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค.

 

Queue ๊ฐ’ ์ถ”๊ฐ€

Queue<Integer> queue = new LinkedList<>(); 
queue.add(1);
queue.add(2);
queue.offer(3);

Queue์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด add(value) ๋˜๋Š” offer(value) ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

add(value)์˜ ๊ฒฝ์šฐ ์‚ฝ์ž…์— ์„ฑ๊ณตํ•˜๋ฉด true ๋ฐ˜ํ™˜, ํ์— ์—ฌ์œ ๊ณต๊ฐ„์ด ์—†์–ด์„œ ์‹คํŒจํ•˜๋ฉด IllergalStateException ๋ฐœ์ƒ

 

Queue์— ๊ฐ’์„ ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐ€ํ•ด๋‚˜๊ฐ„๋‹ค๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด๊ฒŒ ๋œ๋‹ค.

 

 

Queue ๊ฐ’ ์‚ญ์ œ

Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.poll(); // queue์— ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ œ๊ฑฐ, ๋น„์–ด์žˆ๋‹ค๋ฉด null
queue.remove(); // queue์— ์ฒซ๋ฒˆ์งธ ๊ฐ’ ์ œ๊ฑฐ
queue.clear(); // queue ์ดˆ๊ธฐํ™”

queue์—์„œ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด poll() ์ด๋‚˜ remove() ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

poll() ๋ฉ”์†Œ๋“œ : ํ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด null ๋ฐ˜ํ™˜. 

๊ฐ’์„ ์‚ญ์ œํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ€์žฅ ์•ž์ชฝ์— ์žˆ๋Š” ์›์†Œ์˜ ๊ฐ’์ด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ œ๊ฑฐ๋œ๋‹ค.

queue์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด clear()๋ฅผ ์‚ฌ์šฉ

 

Queue์—์„œ ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด๊ฐ„ ๊ฐ’ ์ถœ๋ ฅ

Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.peek(); // queue์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’ ์ฐธ์กฐ

Queue์—์„œ ์ฒซ๋ฒˆ์งธ๋กœ ์ €์žฅ๋œ ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด peek() ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ