프로그래머스(Java) - 이중우선순위 큐

민지킴·2021년 4월 18일
0
post-thumbnail

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/42628

문제 풀이

PritorityQueue 2개를 사용해서 푸는 방법도 생각났지만
효율테스트를 안한다면 이방법도 간단할것 같아서 List를 이용해서 풀었다.
내림차순으로 정렬된 List에서 가장큰값이 0번째 index, 가장 작은 값을 마지막 index로 풀었다.


코드

import java.util.*;

class Num implements Comparable<Num>{
    int num;

    public Num(int num){
        this.num=num;
    }

    public int compareTo(Num o){
        return o.num-num;
    }

    public String toString(){
        return num+"";
    }
}

class Solution {


    public int[] solution(String[] operations) {
        int[] answer = {0,0};

        List<Num>dq = new ArrayList();
        for(int i=0; i<operations.length; i++){
            String [] oper = operations[i].split(" ");
            if("I".equals(oper[0])){
                dq.add(new Num(Integer.parseInt(oper[1])));
                Collections.sort(dq);
            }else{
                if(dq.size()==0){
                    continue;
                }

                if("D 1".equals(operations[i])){
                    dq.remove(0);
                }else{
                    dq.remove(dq.size()-1);
                }
            }
        }
        if(dq.size()!=0){
            answer[0]=Integer.parseInt(String.valueOf(dq.get(0)));
            answer[1]=Integer.parseInt(String.valueOf(dq.get(dq.size()-1)));
        }

        return answer;
    }
}
profile
하루하루는 성실하게 인생 전체는 되는대로

0개의 댓글