본문 바로가기
알고리즘/해시

[백준] 7662번 이중 우선순위 큐 #Java

by VIPeveloper 2022. 5. 27.
반응형

TreeMap 이라는 자료구조를 처음 알게 되었다. 역쉬 많이 풀어봐야 안다!

PriorityQueue 와 유사한 맵이다. firstKey, lastKey로 작고 큰걸 뺄 수 있다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.TreeMap;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());

        while (T-- > 0){
            TreeMap<Integer,Integer> treeMap = new TreeMap<>();
            int k =  Integer.parseInt(br.readLine());
            for (int i = 0; i < k; i++) {
                StringTokenizer st = new StringTokenizer(br.readLine()," ");
                char cmd = st.nextToken().charAt(0);
                int n = Integer.parseInt(st.nextToken());
                if(cmd=='I'){
                    treeMap.put(n,treeMap.getOrDefault(n,0)+1);
                }else{
                    if(n==1){
                        if(treeMap.size()==0) continue;
                        int value = treeMap.get(treeMap.lastKey());
                        if(value==1) treeMap.remove(treeMap.lastKey());
                        else treeMap.put(treeMap.lastKey(),value-1);
                    }else{
                        if(treeMap.size()==0) continue;
                        int value = treeMap.get(treeMap.firstKey());
                        if(value==1) treeMap.remove(treeMap.firstKey());
                        else treeMap.put(treeMap.firstKey(),value-1);
                    }
                }
            }
            if(treeMap.size()==0){
                System.out.println("EMPTY");
            }else{
                System.out.println(treeMap.lastKey() + " " + treeMap.firstKey());
            }
        }
    }
}
반응형