
-Code
import java.util.*;
class Solution {
public int[] solution(String[] operations) {
// 우선 순위 큐로 오름차순과 내림차순 2개 관리
PriorityQueue<Integer> naturalQueue = new PriorityQueue<>();
PriorityQueue<Integer> reverseQueue = new PriorityQueue<>(Comparator.reverseOrder());
// 명령어 받기
for (String operation : operations) {
StringTokenizer st = new StringTokenizer(operation);
String comm = st.nextToken();
int num = Integer.parseInt(st.nextToken());
if (comm.equals("I")) {
// I면 입력 받기
naturalQueue.add(num);
reverseQueue.add(num);
} else {
// D이면서 1이면 max, -1이면 min값 삭제
if (num == 1 && !reverseQueue.isEmpty()) {
int pollNum = reverseQueue.poll();
naturalQueue.remove(pollNum);
} else if (num == -1 && !naturalQueue.isEmpty()) {
int pollNum = naturalQueue.poll();
reverseQueue.remove(pollNum);
}
}
}
int[] answer = {0, 0};
// 우선순위 큐가 비어있지 않으면 값 저장
if (!naturalQueue.isEmpty() && !reverseQueue.isEmpty()) {
answer[0] = reverseQueue.poll();
answer[1] = naturalQueue.poll();
}
return answer;
}
}
우선순위 큐여서 1개로 관리가 되나 했지만 좀 찾아보니 2개로 두면 된다는 것을 힌트로 얻고 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 18271번 Preokret (0) | 2026.01.19 |
|---|---|
| [백준/Java] 10026번 적록색약 (0) | 2026.01.18 |
| [백준/Java] 21736번 헌내기는 친구가 필요해 (0) | 2026.01.18 |
| [프로그래머스/Java] [1차] 캐시 (0) | 2026.01.18 |
| [백준/Java] 34200번 장애물 (0) | 2026.01.18 |