순서와 상관없이 우선순위가 높은 데이터가 먼저 나가는 데이터 구조다.
아래처럼 Collections.reverseOrder()를 넣어 선언하면 우선순위가 높은 큰숫자가 먼저 나온다. 문제에선 최소 값을 출력해야하기 때문에 기본형으로 선언해준다.
PriorityQueue<Integer> pQ = new PriorityQueue<>(Collections.reverseOrder());
PriorityQueue<Integer> heap = new PriorityQueue<>();
for (int i = 0; i < n; i++) {
int input = Integer.parseInt(br.readLine());
switch (input) {
case 0:
bw.write(!heap.isEmpty() ? (heap.poll() + "") : (0 + ""));
bw.write("\n");
break;
default:
heap.add(input);
break;
}
}
bw.flush();
bw.close();
br.close();
}
}