https://school.programmers.co.kr/learn/courses/30/lessons/42628
설명
- 오름차순으로 정렬되는 우선순위 큐와 내림차순으로 정렬되는 우선순위 큐를 생성한다.
- PriorityQueue<Integer> queue = new PriorityQueue<>();
- PriorityQueue<Integer> maxPq = new PriorityQueue<>(Collections.reverseOrder());
- 입력으로 들어오는 operation을 공백 기준으로 나눈다.
- 만약 입력이라면 queue와 MaxPq에 모두 값을 추가한다.
- 가장 큰 원소를 제거하는 명령이라면, maxPq에서 poll하고 해당 값을 queue에서도 제거한다.
- 가장 작은 원소를 제거하는 명령이라면, minPq에서 poll하고 해당 값을 maxPq에서도 제거한다.
코드
import java.util.*;
class Solution {
public int[] solution(String[] operations) {
int[] answer = new int[2];
PriorityQueue<Integer> queue = new PriorityQueue<>();
PriorityQueue<Integer> maxPq = new PriorityQueue<>(Collections.reverseOrder());
for(String op : operations) {
String[] str = op.split(" ");
String judge = str[0];
int value = Integer.parseInt(str[1]);
if(queue.size() < 1 && judge.equals("D")) {
continue;
}
if(judge.equals("I")) {
queue.add(value);
maxPq.add(value);
} else if(judge.equals("D") && value == 1) {
int max = maxPq.poll();
queue.remove(max);
} else if(judge.equals("D") && value == -1) {
int min = queue.poll();
maxPq.remove(min);
}
}
if(queue.size() > 0) {
answer[0] = maxPq.poll();
answer[1] = queue.poll();
}
return answer;
}
}
반응형