https://www.acmicpc.net/problem/11279
1. 아이디어
자바에서 힙을 구현하는 PriorityQueue을 이용하면 간단하게 구현할 수 있다.
2. 문제풀이
PriorityQueue는 오름차순으로 정렬되므로 바로 사용하면 최소힙이 된다. 이를 내림차순으로 정렬되는 최대힙으로 사용하기 위해 생성자에 Collections.reverseOrder() 메서드로 정렬 기준을 바꿔주었다.
add 메서드와 poll 메서드로 삽입, 삭제를 구현했다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for (int i = 0; i < N; i++) {
int x = Integer.parseInt(br.readLine());
if (x > 0) pq.add(x);
else {
if (pq.isEmpty()) sb.append(0).append("\n");
else sb.append(pq.poll()).append("\n");
}
}
bw.write(sb.toString());
bw.flush();
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 10844번 - 쉬운 계단 수 [Java] (0) | 2025.01.02 |
---|---|
[백준] 11286번 - 절댓값 힙 [Java] (0) | 2025.01.02 |
[백준] 1927번 - 최소힙 [Java] (0) | 2025.01.02 |
[백준] 1676번 - 팩토리얼 0의 개수 [Java] (0) | 2025.01.02 |
[백준] 10773번 - 제로 [Java] (0) | 2025.01.02 |