본문 바로가기
알고리즘/코드트리 문제풀이

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

by 잔디🌿 2023. 9. 8.

    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);
    }
    }