💡Problem Solving/BOJ

[BOJ 1927] 최소 힙 (Java)

gom20 2021. 11. 12. 10:40

문제

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

 

1927번: 최소 힙

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

www.acmicpc.net

 

풀이

PriorityQueue로 풀면 된다. 

PriorityQueue는 정수형의 경우 기본정렬이 오름차순이므로 따로 Comparator를 만들어줄 필요는 없다.

 

소스코드

package heap;

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

public class BOJ1927 {

    public static void main(String[] args) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        PriorityQueue<Integer> pque = new PriorityQueue<Integer>();

        int N = Integer.parseInt(br.readLine());
        for(int i = 0; i < N; i++){
            int num = Integer.parseInt(br.readLine());
            if(num == 0){
                if(pque.isEmpty()){
                    bw.write(0 + "\n");
                } else {
                    bw.write(pque.poll() + "\n");
                }
            } else {
                pque.offer(num);
            }
        }
        bw.flush();
    }
}

'💡Problem Solving > BOJ' 카테고리의 다른 글

[BOJ 1655] 가운데를 말해요 (Java)  (0) 2021.11.12
[BOJ 11286] 절댓값 힙 (Java)  (0) 2021.11.12
[BOJ 9375] 패션왕 신해빈 (Java)  (0) 2021.11.11
[BOJ 3036] 링 (Java)  (0) 2021.11.11
[BOJ 1037] 약수 (Java)  (0) 2021.11.11