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 num_cnt = Integer.parseInt(br.readLine());
PriorityQueue<Integer> pq= new PriorityQueue<>();
for(int i = 0 ; i < num_cnt ; i++) {
int num = Integer.parseInt(br.readLine());
if(num == 0) { // 입력받은 수가 0이라면??
if( pq.isEmpty() ) { // 배열이 비어있다면??
System.out.println(0); // 0을 출력해준다.
}else { // 배열이 비어있지 않다면 ??
System.out.println(pq.poll()); // 가장 작은 수를 출력하고 제거해준다.
}
}else { // 입력받은 수가 0이 아니라면??
pq.add(num); // 그 수를 배열에 넣어준다.
}
}
}
}
이전 포스팅에서는 Stack을 사용하여 문제를 풀었다면 이번에는 Queue를 사용하는 방법을 알고 싶어서 이 문제를 풀기로 하였다. 먼저 이 문제는 PriorityQueue를 이용하여 쉽게 풀 수 있는 문제였다. 하지만 PriorityQueue를 모르는 상태에서 문제를 풀려고 혼자서 씨름을 하다가 다른 사람들의 도움을 받고 문제를 풀 수 있었다.
문제를 해석해보면 0을 입력받을 경우 배열의 가장 작은 수를 출력한 후 제거해준다. 0이 아닌 자연수를 입력받은 경우 배열에 그 수를 넣어준다. 만약에 배열이 비어있는 상태에서 0을 입력받으면 0을 출력해준다.
'문제풀이 > 백준' 카테고리의 다른 글
백준 16173. 점프왕 쩰리(Small)(JAVA) (0) | 2022.03.16 |
---|---|
백준 1715. 카드 정렬하기(JAVA) (0) | 2022.03.14 |
백준 10773. 제로(JAVA) (1) | 2022.03.11 |
백준 10828. 스택(JAVA) (0) | 2022.03.10 |
백준 8958. OX퀴즈(JAVA) (0) | 2022.03.08 |