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