상세 컨텐츠

본문 제목

백준 1927번

백준 알고리즘 풀이

by 발발개발 2021. 11. 8. 09:47

본문

원본 : https://www.acmicpc.net/problem/1927

 

1927번: 최소 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

 

풀이

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Comparator;
import java.util.PriorityQueue;

public class Main {

	public static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
	public static BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));

	public static void main(String[] args) throws Exception {
		int n = Integer.parseInt(reader.readLine());
		
		PriorityQueue<Integer> heap = new PriorityQueue<Integer>(new Comparator<Integer>() {
			@Override
			public int compare(Integer o1, Integer o2) {
				return o1 - o2;
			}
		});
		
		for (int i = 0; i < n; i++) {
			int input = Integer.parseInt(reader.readLine());
			
			if (input != 0) {
				heap.add(input);
			} else {
				Integer peek = heap.poll();
				if (peek == null) {
					writer.write("0\n");
				} else {
					writer.write(peek + "\n");
				}
			}
		}
		
		writer.flush();
	}
}

'백준 알고리즘 풀이' 카테고리의 다른 글

백준 1655번  (0) 2021.11.08
백준 11286번  (0) 2021.11.08
백준 12015번  (0) 2021.11.04
백준 1300번  (0) 2021.11.04
백준 2110번  (0) 2021.04.19

관련글 더보기

댓글 영역