문제 내용은 입력으로 연산 갯수를 받은 뒤, 그 다음부터는 0이 나올 경우 가장 작은 수를 뽑아 출력해야 하고, 배열 안에 값이 없다면 0을 출력해줘야 한다, 0 외에 다른 숫자가 들어왔다면, 해당 수는 배열 안에 넣어주면 되겠다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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<>();
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);
}
}
}
}
내용은 배열이라고는 하지만 우선순위큐를 말하고 있는데, 우선순위큐 내부에서 힙을 사용하므로 값을 삽입할 경우 알아서 최소값이 앞으로 들어가게 정렬되고 뽑을 때에도 작은 값이 먼저 나오게 된다.
우선순위 큐를 선언한 후 사용해주면 해결이지만 주의할 점은 큐에 아무 값도 들어가지 않았을 경우에는 0을 출력해주는 것만 잊지 않으면 된다.
Leave a Reply