공부가 싫은 개발자
[JAVA] PriorityQueue 본문
✅ 기본 개념
- 자동 정렬되는 큐
- 기본은 최솟값 우선 (오름차순)
- poll() 시 가장 작은 값부터 꺼냄
- 내부적으로 힙(heap) 구조 사용
1. 선언과 초기화
PriorityQueue<Integer> pq = new PriorityQueue<>(); // 오름차순 (최솟값 우선)
PriorityQueue<Integer> maxPq = new PriorityQueue<>(Collections.reverseOrder()); // 내림차순 (최댓값 우선)
2. 요소 추가
pq.offer(5);
pq.offer(2);
pq.offer(8);
3. 요소 제거 + 반환
int val = pq.poll(); // 가장 작은 값 꺼냄
4. 요소 조회
int peek = pq.peek(); // 가장 작은 값 확인 (제거 X)
5. 크기 확인
pq.size();
6. 전체 순회
- 순회 시 정렬된 순서가 아님
- 꺼낼 때만 정렬된 순서로 나옴
for (int num : pq) {
System.out.println(num);
}
7. 코딩테스트에서 자주 쓰이는 상황
| 상황 | 활용 예시 |
| 최솟값/최댓값 빠르게 꺼내기 | poll() |
| 다익스트라 알고리즘 | PriorityQueue<Node>로 거리 기준 정렬 |
| 힙 문제 | PriorityQueue로 구현 |
| 시뮬레이션 순서 처리 | pq.offer()로 우선순위 지정 |
'코딩테스트' 카테고리의 다른 글
| [JAVA] 문자열 처리 (0) | 2025.10.17 |
|---|---|
| [JAVA] Stack (0) | 2025.10.17 |
| [JAVA] Queue (0) | 2025.10.17 |
| [JAVA] Set (0) | 2025.10.17 |
| [JAVA] Map (0) | 2025.10.17 |