본문 바로가기

백준

[백준] 11279 최대 힙(JAVA)

풀이

이 문제는 어렵게 생각할것 없이 그냥 우선순위큐를 사용하면 된다. 특이점으로는 오름차순이 아니라 내림차순으로 우선순위를 정해야하는데 나는 그냥 넣을때는 전부 - 부호를 붙혀서 넣었고 뺄때는 -부호를 다시 붙혀서 빼내었다.

import java.io.*;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

class Main {

    static int N;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine(), "");
        PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
        int x;
        int out;
        N = Integer.parseInt(st.nextToken());

        for(int i=0; i<N; i++){
            st = new StringTokenizer(br.readLine(), "");
            x = Integer.parseInt(st.nextToken());
            if(x!=0){
                pq.offer(-x);
            }
            else{
                if(!pq.isEmpty())
                    System.out.println(-pq.poll());
                else
                    System.out.println(0);
            }
        }
    }
}