728x90
๋ฐ์ํ
Queue
์ ์ ์ ์ถ(FIFO, First-In-First-Out) ๋ฐฉ์
Queue๋ ํน์ดํ๊ฒ contains() ํจ์๋ฅผ ํตํด ์ด๋ ํ ๊ฐ์ด ํฌํจ๋์ด์๋์ง๋ ํ์ธํ ์ ์์ง๋ง
Index์ ๊ฐ๋
์ด ์์ด์ ์ด๋ ํ ๊ฐ์ด ๋ช๋ฒ์งธ์ ์๋์ง๋ ์ ์ ์์ต๋๋ค.
์ ์ธ๋ฐฉ๋ฒ
Queue<Integer> que = new LinkedList<Integer>();
Queue<๊ฐ์ฒด> ๋ณ์๋ช
= new LinkedList<๊ฐ์ฒด>();
Queue์ LinkedList ์ ํธ์ ๋ชจ๋ importํด์ค์ผ ์ ์์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- enqueue (offer): ํ์ ๋์ ์์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- dequeue (poll): ํ์ ์์์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํฉ๋๋ค.
- peek: ํ์ ์์ ์๋ ์์๋ฅผ ์ ๊ฑฐํ์ง ์๊ณ ๋ฐํํฉ๋๋ค.
- isEmpty: ํ๊ฐ ๋น์ด ์๋์ง ํ์ธํฉ๋๋ค.
- size: ํ์ ์์ ๊ฐ์๋ฅผ ๋ฐํํฉ๋๋ค.
1. LinkedList๋ฅผ ์ด์ฉํ ํ ๊ตฌํ ์์
import java.util.Queue;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
Queue queue = new LinkedList();
queue.add(1);
queue.add(2);
queue.add(3);
queue.add(4);
queue.poll(); // 1 (๊ฐ์ฅ ๋จผ์ ๋ค์ด๊ฐ๋ ์์)
queue.peek(); // 2
queue.contains(3); // true
queue.size()) // 3
queue.isEmpty() // false
}
2. arrayList๋ฅผ ์ด์ฉํ queue ๊ตฌํ
import java.util.*;
public class MyQueue {
private ArrayList<Integer> listQueue = new ArrayList<Integer>();
// ํ์ ๋ฐ์ดํฐ ์ถ๊ฐ
public void add(Integer data) {
// ArrayList์ ๋ฐ์ดํฐ ์ถ๊ฐ
listQueue.add(data);
}
// ๊ฐ์ฅ ๋จผ์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ํ์์ ์ญ์ ํ๊ณ , ์ญ์ ํ ๋ฐ์ดํฐ ๋ฐํ
public Integer poll() {
// ํ๊ฐ ๋น์ด์์ผ๋ฉด null ๋ฐํ
if (this.size() == 0) {
return null;
} else {
// ํ๊ฐ ๋น์ด์์ง ์์ผ๋ฉด ๊ฐ์ฅ ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ณ ๋ฐํ
return listQueue.remove(0);
}
}
// ํ์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ ๋ฐํ
public int size() {
// ArrayList์ ํฌ๊ธฐ ๋ฐํ
return listQueue.size();
}
// ํ์ ๊ฐ์ฅ ๋จผ์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ ๋ฐํ (์ญ์ ํ์ง ์์)
public Integer peek() {
// ํ๊ฐ ๋น์ด์์ผ๋ฉด null ๋ฐํ
if (this.size() == 0) {
return null;
} else {
// ํ๊ฐ ๋น์ด์์ง ์์ผ๋ฉด ๊ฐ์ฅ ์์ ์๋ ๋ฐ์ดํฐ ๋ฐํ
return listQueue.get(0);
}
}
// ํ์ ๋ค์ด์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ฐํ
public String show() {
// ArrayList๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ฐํ
return listQueue.toString();
}
// ํ์ ๋ค์ด์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์
public void clear() {
// ArrayList์ ๋ชจ๋ ์์ ์ญ์
listQueue.clear();
}
}
ํ์ ์์ฉ
ํ๋ ๋ค์ํ ๋ฌธ์ ํด๊ฒฐ์ ์ ์ฉํ๊ฒ ์ฐ์ ๋๋ค. ๋ํ์ ์ธ ์๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ๋ฆฐํฐ ๋๊ธฐ์ด: ์ธ์ ์์ ์ด ๋์ฐฉํ ์์๋๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ๋ฉํฐ์ค๋ ๋ฉ: ์์ ์ค์ผ์ค๋ง์ ์ํด ์์ ๋ค์ ํ์ ๋ฃ์ด ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- BFS (Breadth-First Search): ๊ทธ๋ํ๋ ํธ๋ฆฌ์ ๋๋น ์ฐ์ ํ์์ ์ํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ์บ์ ๊ตฌํ: ์ํ ๋ฒํผ(circular buffer)๋ ์ต๊ทผ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง ์ ๊ฑฐ ์๊ณ ๋ฆฌ์ฆ(LRU, Least Recently Used) ๋ฑ์ ๊ตฌํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ์ํ
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] DFS์ BFS JAVA (0) | 2024.06.14 |
---|---|
์ด์งํ์(Binary Search) ๊ฐ๋ ์ ๋ฆฌ (1) | 2024.06.11 |
Stack ๊ฐ๋ ์ ๋ฆฌ (0) | 2024.06.11 |
๋ฐฑ์ค 10988 ์๋ฐ ํฐ๋ฆฐ๋๋กฌ์ธ์ง ํ์ธํ๊ธฐ (0) | 2023.12.15 |
๋ฐฑ์ค 2609 java ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2023.12.11 |