조앤의 기술블로그

[프로그래머스 / 힙] 이중우선순위큐 (java) 본문

Programming/프로그래머스

[프로그래머스 / 힙] 이중우선순위큐 (java)

쬬앤 2020. 4. 2. 12:59

[코드]

import java.util.*;
class Solution {
    static PriorityQueue<Integer> min = new PriorityQueue<>();
    static PriorityQueue<Integer> max = new PriorityQueue<>(Collections.reverseOrder());
    static void deleteMax(){
        while(!min.isEmpty()){
            max.add(min.poll());
        }
        max.poll();
        while(!max.isEmpty()){
            min.add(max.poll());
        }
    }
    public int[] solution(String[] operations) {
        int[] answer = {};

        answer = new int[2];
        for(String oper : operations){
            String[] s = oper.split(" ");
            String command = s[0];
            int data = Integer.parseInt(s[1]);
            
            if(command.equals("I")){
                min.offer(data);
                
            }else if(command.equals("D")){
                if(data == 1){
                    deleteMax();
                }else if(data == -1){
                    min.poll();
                }
            }
        }
        
        if(min.isEmpty()){
            answer[0] = 0;
            answer[1] = 0;
            
        }else{
            
           
            answer[1] = min.poll();
            while(!min.isEmpty()){
                max.add(min.poll());
            }
            answer[0] = max.poll();
        }
        
        return answer;
    }
}

answer = new int[2]; 를 안해줘서 에러가 났었다. 배열을 사용할 때는 잊지말고 해주자! 시간잡아먹는다.