알고리즘/코딩테스트

프로그래머스 이중우선순위큐

호두밥 2021. 9. 28. 22:58

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

 

코딩테스트 연습 - 이중우선순위큐

 

programmers.co.kr

 

풀이 : 최소값과 최대값을 동시에 찾아낼 수 있는 Collection의 TreeMap을 이용함.

 

import java.util.*;
class Solution {
     public int[] solution(String[] operations) {
         // 큐
    	TreeMap<Integer, Integer> tm = new TreeMap<>();
    	
    	for(int i = 0; i<operations.length; i++) {
    		
    		String[] str = operations[i].split(" ");
    		
    		Integer num = Integer.valueOf(str[1]);
    		
    		// 큐에 주어진 숫자를 삽입
    		if(str[0].equals("I")) {
    			tm.put(num, i);    			
    		}
    		if(str[0].equals("D")) {
    			if(num < 0) {
    				tm.pollFirstEntry(); //최소값 삭제
    			}else {
    				tm.pollLastEntry();  //최대값 삭제
    			}
    		}
    		
    	}
    	
    	int min = 0; 
    	int max = 0; 
		
    	if(!tm.isEmpty()) {
    		min = tm.firstKey();
    		max = tm.lastKey();
    	}
    	
    	int[] answer = { max, min};
        
        return answer;
    
    }
}