💡Problem Solving/BOJ
[BOJ 1927] 최소 힙 (Java)
gom20
2021. 11. 12. 10:40
문제
https://www.acmicpc.net/problem/1927
1927번: 최소 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
풀이
PriorityQueue로 풀면 된다.
PriorityQueue는 정수형의 경우 기본정렬이 오름차순이므로 따로 Comparator를 만들어줄 필요는 없다.
소스코드
package heap;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.PriorityQueue;
public class BOJ1927 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
PriorityQueue<Integer> pque = new PriorityQueue<Integer>();
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++){
int num = Integer.parseInt(br.readLine());
if(num == 0){
if(pque.isEmpty()){
bw.write(0 + "\n");
} else {
bw.write(pque.poll() + "\n");
}
} else {
pque.offer(num);
}
}
bw.flush();
}
}