알고리즘/코드트리 문제풀이

코드트리 [자바 java] 정수 명령 처리 6

잔디🌿 2023. 9. 8. 11:44

https://www.codetree.ai/missions/8/problems/process-numeric-commands-6?&utm_source=clipboard&utm_medium=text 

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

이 문제는 priority를 사용한 문제인데, 주의할 점은 기존 자바의 priorityQueue와는 다르게 내림차순으로 정렬해야한다는 점입니다.

 

<PreorityQueue 내림차순으로 정렬하는 방법>

   PriorityQueue<Integer> m = new PriorityQueue<>(Collections.reverseOrder());

위와 같이 priorityQueue를 만들고, 선언하는 끝에 Collection.reverseOrder()을 하면 된다.

 

import java.io.*;
import java.util.*;
import java.math.*;


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

        PriorityQueue<Integer> m = new PriorityQueue<>(Collections.reverseOrder());

        StringTokenizer st;
        StringBuilder sb = new StringBuilder();

        for(int i = 0;i<n;i++){
            st = new StringTokenizer(br.readLine());
            String k = st.nextToken();
            
            if(k.equals("push")){
                int a = Integer.parseInt(st.nextToken());
                m.add(a);
            }

            else if(k.equals("pop")){
                int a = m.poll();
                sb.append(a + "\n");
            }

            else if(k.equals("size")){
                sb.append(m.size() + "\n");
            }
            
            else if(k.equals("empty")){
                if(m.isEmpty() == true){
                    sb.append(1 + "\n");
                }
                else sb.append(0 + "\n");
            }

            else if(k.equals("top")){
                 sb.append(m.peek() + "\n");
            }

    }

     System.out.println(sb);
}
}