입력으로 0을 제외한 수를 받을 경우에는 작은 순서대로 들어가야 하고, 0을 입력했을 경우에는 작은 수 순서대로 출력해주면 되는데, 배열의 크기가 0일 경우에는 0을 출력해줘야 한다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
for (int i = 0; i < count; i++) {
int cmd = Integer.parseInt(br.readLine());
if (cmd == 0) {
if (queue.size() == 0) {
System.out.println(0);
} else {
System.out.println(queue.poll());
}
} else {
queue.add(cmd);
}
}
}
}
문제는 배열을 말하고 있지만, 힙을 사용한 자료구조는 우선순위큐에 구현이 되어 있기 때문에 우선순위큐를 선언하되, 출력 시 큰 수부터 출력해야 하므로, Collections.reverseOrder()를 사용해줘야 한다.
이후 우선순위큐에 값을 넣으면 알아서 큰 수가 앞으로 오게 삽입되고, 0을 받아 값을 출력하는 경우에는 queue의 크기가 0이어서 0을 출력하는 부분만 조심해주면 된다
Leave a Reply