반응형
문제
https://www.acmicpc.net/problem/11279
1927 최소 힙과 비슷한 문제이다.
코드
import java.io.*;
import java.util.*;
public class bj_11279 {
private static StringBuilder sb = new StringBuilder();
private static PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
calculate(Integer.parseInt(br.readLine()));
}
System.out.println(sb);
}
private static void calculate(int x) {
if (x == 0) {
sb.append(maxHeap.isEmpty() ? 0 : maxHeap.poll()).append("\n");
} else {
maxHeap.add(x);
}
}
}
풀이
private static PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
- `PriorityQueue`를 사용하여 최대 힙 구현
- `Collections.reverseOrder()`를 사용하여 내림차순 정렬(최대 힙) 적용
- 이 부분만 없애면 최소 힙 문제의 정답 코드 완성이다.
`calculate` 메서드
private static void calculate(int x) {
if (x == 0) {
sb.append(maxHeap.isEmpty() ? 0 : maxHeap.poll()).append("\n");
} else {
maxHeap.add(x);
}
}
- 입력값이 `0`일 때
- 최대 힙에서 가장 큰 값을 꺼낸다.
- 힙이 비어있다면 `0`을 출력
- 입력값이 `0`이 아닐 때
- 값을 최대 힙에 추가
반응형
'백준' 카테고리의 다른 글
[백준] 7662: 이중 우선순위 큐 (0) | 2025.03.22 |
---|---|
[백준] 1697: 숨바꼭질 (1) | 2025.03.22 |
[백준] 1167: 트리의 지름 (0) | 2025.03.19 |
[백준] 2178: 미로 탐색 (0) | 2025.03.15 |
[백준] 1463: 1로 만들기 (0) | 2025.03.14 |