import java.io.*;
import java.util.*;
class Main{
static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
static StringBuilder sb=new StringBuilder();
static int N;
public static void main(String args[]) throws Exception {
N=Integer.parseInt(br.readLine());
PriorityQueue<Integer> pq=new PriorityQueue<Integer>();
for(int i=0;i<N;i++) {
int num=Integer.parseInt(br.readLine());
if(num==0) {
if(pq.isEmpty()) sb.append("0\n");
else sb.append(pq.poll()+"\n");
}
else {
pq.add(num);
}
}
System.out.println(sb);
}
}
priority 클래스를 이용해서 문제를 풀어보았습니다.
최소 합을 구하는 문제이므로 오름차순 정렬을 해서 pq에 삽입하면 됩니다.
for문을 통해 입력값이 0일 때 pq가 비어있으면 0을 출력하고, 그렇지 않으면 최소값을 출력했구요, 입력값이 0이 아닐 때, pq에 입력값을 삽입합니다.
'프로그래밍 문제 > BOJ(백준 온라인 저지)' 카테고리의 다른 글
[BOJ 1655번] 가운데를 말해요(JAVA) (0) | 2020.09.09 |
---|---|
[BOJ 11279번] 최대 힙(JAVA) (0) | 2020.09.08 |
[BOJ 1300번] K번째 수(JAVA) (0) | 2020.09.04 |
[BOJ 2805번] 나무 자르기(JAVA) (0) | 2020.09.03 |
[BOJ 2981번] 검문(JAVA) (0) | 2020.09.02 |