관리 메뉴

공부가 싫은 개발자

[JAVA] PriorityQueue 본문

코딩테스트

[JAVA] PriorityQueue

우엉엉 2025. 10. 17. 14:47

✅ 기본 개념

  • 자동 정렬되는 큐
  • 기본은 최솟값 우선 (오름차순)
  • 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