- 오늘의 학습 키워드 : PriorityQueue
[문제 이름 : 최소 힙]
문제 url : https://www.acmicpc.net/problem/1927
내가 작성한 코드는 아래와 같다.
import java.util.*;
import java.io.*;
public class Main {
static StringBuilder sb;
static PriorityQueue<Integer> pq = new PriorityQueue<>();
public static void main(String[] args) throws IOException {
sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for(int i=0; i<n; i++) {
int num = Integer.parseInt(br.readLine());
solution(num);
}
System.out.println(sb.toString());
}
static void solution(int num) {
if(num == 0) {
int returnNum = pq.isEmpty() ? 0 : pq.poll();
sb.append(returnNum).append("\n");
} else {
pq.add(num);
}
}
}
최소 힙의 개념을 알고 있던 상태라, 문제가 어렵게 느껴지지는 않았다.
x에 0이 들어왔을 때, PriorityQueue가 비어있는지 여부에 따라 결과값을 다르게 출력해주었다.
여담으로, PriorityQueue의 순서를 사용자 정의로 바꾸는 방법에 대해 복습해보면 좋을 것 같다고 생각했다.
풀이 시간 : 10분
내일은 PriorityQueue의 정렬 순서를 원하는 형태로 구현할 수 있게 하는 방법을 찾아보고, 이를 숙련해보고자 한다.