스터디/Algorithm

[백준] 절댓값 힙 11286 java - Priority Queue

혜유우 2024. 5. 18. 03:20

 

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

 

priority queue를 이용해서 

조건에 따라 우선순위를 부여하는 방식으로

구현했다

 

 

내 풀이

import java.io.*;
import java.util.*;

public class Main {
    static int K, N;
    static int[] A;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //StringTokenizer st = new StringTokenizer(br.readLine());
        StringBuilder sb = new StringBuilder();

        PriorityQueue<Integer> q  = new PriorityQueue<>(((o1, o2) -> {
            int answer1 = Math.abs(o1);
            int answer2 = Math.abs(o2);

            if(answer1==answer2){
                return o1>o2 ? 1 : -1;
            }
            return answer1-answer2;
        } ));

        N = Integer.parseInt(br.readLine());

        for(int i=0;i<N;i++){
            int input = Integer.parseInt(br.readLine());
                if(input==0){
                    Integer result = q.poll();
                    if(result!=null)
                        sb.append(result+"\n");
                    else
                        sb.append(0+"\n");
                } else {
                    q.add(input);
                }
        }

        System.out.println(sb);

    }

}