Algorithm/프로그래머스

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

미스터로즈 2021. 10. 1. 09:34

문제

 

제한 사항 및 입출력

 

문제풀이

import java.util.*;

class Solution {
    public int[] solution(String[] operations) {
        int[] answer = new int[2];
        PriorityQueue<Integer> pq1 = new PriorityQueue<>();
        PriorityQueue<Integer> pq2 = new PriorityQueue<>(Collections.reverseOrder());
        
        String[] tmp;
        for(int i = 0 ; i < operations.length;i++){
            tmp = operations[i].split(" ");
            if(pq1.size()==0 && tmp[0].equals("D"))continue;
            if(tmp[0].equals("I")){
                pq1.add(Integer.parseInt(tmp[1]));
                pq2.add(Integer.parseInt(tmp[1]));
            }else if(tmp[0].equals("D")&&tmp[1].equals("1")){
                int max = pq2.poll();
                pq1.remove(max);
            }else if(tmp[0].equals("D")&&tmp[1].equals("-1")){
                int min = pq1.poll();
                pq2.remove(min);
            }
        }
        if(pq1.size()>0){
            answer[0]=pq2.poll();
            answer[1]=pq1.poll();
        }
        
        return answer;
    }
}

 

※ 내 생각

우선 순위 큐를 2개 이용하여 문제풀이를 진행했습니다.
오름차순을 진행하는 큐
내림차순을 진행하는 큐
2개의 큐를 만들고 상황에 따라서 각각을 삭제했습니다.