99클럽 코테 스터디 19일차 TIL
💙 JAVA 비기너
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
int N = Integer.parseInt(br.readLine());
for(int i=0; i<N; i++) {
int x = Integer.parseInt(br.readLine());
if(x == 0) bw.write((minHeap.isEmpty()) ? "0\n" : minHeap.poll() + "\n");
else minHeap.add(x);
}
bw.flush();
br.close();
bw.close();
}
}
힙을 사용하는 첫번째 문제라서 그런가 아주 단순했다.
PriorityQueue minHeap = new PriorityQueue<>();
로 최소 힙을 생성해주고 입력 받는 정수 x
가 0이 아니라면 minHeap
에 넣어주고 0이라면 minHeap
이 비었을 땐 0을, 아니라면 최소값을 반환하는 PriorityQueue.poll()
을 해주어 출력한 후 삭제해준다.
스택, 큐, 힙의 함수가 비슷해서 그냥 어떤 자료구조를 사용하느냐를 결정하면 추가적으로 알아볼 필요가 없어서 편리하고 좋은 것 같다.