728x90
반응형
📜 문제 내용
🤔 과정
- 우선순위 큐를 그냥 생성하면 최솟값 기준의 우선순위 큐가 되어 Collection.reverseOrder() 를 활용해 최댓값 기준 우선순위 큐를 만들어야겠다고 판단.
- 명령어에 대한 연산은 어렵지 않았고, 삭제 명령 시에 두 우선순위 큐에서 삭제를 해야하므로 remove(값) 을 이용해 둘 다 삭제할 수 있게 했다.
✨ 최초 제출 답안
import java.util.*;
import java.io.*;
class Solution {
public int[] solution(String[] operations) {
// 최솟값 우선순위 minPq , 최댓값 우선순위 maxPq
PriorityQueue<Integer> minPq = new PriorityQueue<>();
PriorityQueue<Integer> maxPq = new PriorityQueue<>(Collections.reverseOrder());
int commandCnt = operations.length; // 명령 횟수
String[] command = new String[2]; // 명령이 띄어쓰기로 담길 배열
for(int i = 0; i < commandCnt; i++){
command = operations[i].split(" ");
if(command[0].equals("I")){ // 삽입 명령
minPq.offer(Integer.parseInt(command[1]));
maxPq.offer(Integer.parseInt(command[1]));
}else{ // 제거 명령
if(command[1].equals("1") && !maxPq.isEmpty()){
int max = maxPq.poll();
minPq.remove(max);
}else if(command[1].equals("-1") && !minPq.isEmpty()){
int min = minPq.poll();
maxPq.remove(min);
}
}
}
// 최댓값, 최솟값 순으로 담길 answer 배열
int[] answer = new int[2];
answer[0] = !maxPq.isEmpty() ? maxPq.poll() : 0;
answer[1] = !minPq.isEmpty() ? minPq.poll() : 0;
return answer;
}
}
- if & else 대신 switch & case로도 시도할 수 있다.
🔗 문제 링크
728x90
반응형