[코드트리 챌린지] 정수 명령 처리6

Lee-MyungMo·2023년 9월 25일
0

CodeTree

목록 보기
8/8
post-thumbnail

실력진단

문제


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

풀이

  • PriorityQueue를 생성하여 각 명령어에 따라 구현
  • 기본적으로 최솟값을 우선적으로 뽑아주는 최소 우선순위 큐
  • 기본으로 최솟값을 먼저 선출하기 때문에 -로 넣어서 먼저 선출되는 값이 최댓값이 되도록 함

코드

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

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> pq = new PriorityQueue<>(); //우선순위 큐

        for (int i = 0; i < n; i++) {
        	// String 구분
            StringTokenizer stk = new StringTokenizer(br.readLine(), " ");
            switch (stk.nextToken()) { // String에 따른 case 구분
                case "push":
                    int a = Integer.parseInt(stk.nextToken());
                    pq.offer(-a); // 최댓값을 먼저 뽑기 위해 -해서 넣어줌
                    break;
                case "pop":
                    System.out.println(-pq.poll());
                    break;
                case "size":
                    System.out.println(pq.size());
                    break;
                case "empty":
                    if (pq.isEmpty()) {
                        System.out.println(1);
                    } else {
                        System.out.println(0);
                    }
                    break;
                case "top":
                    System.out.println(-pq.peek()); // 최솟값에 -를 해주면 최댓값이 된다
                    break;
            }
        }
    }
}

느낀점

우선순위 큐 문제 유형들에 대해서 애매한 점들이 많고 어떤 상황에서 사용할지 고민이 많이 된다.
이번에 푸는 유형들에 대해서 많이 공부해야겠다.
서류도 많고 코테도 많아서 한동안 소흘했는데 다시 맘 다잡고 공부해야지..
꾸준히 해야 취업은 못해도 얻는게 있을 것이라고 생각한다. (당연한 말이지만..)

profile
취준생

0개의 댓글