https://programmers.co.kr/learn/courses/30/lessons/42628
문제
이해
우선순위큐를 최소값 정렬과 최댓값 정렬로 2개를 만들면 쉽게 풀 수 있다.
풀이
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
class Solution {
public static int[] solution(String[] operations) {
int[] answer = new int[2];
//최소 힙, 최대 힙
PriorityQueue<Integer> pq = new PriorityQueue<>();
PriorityQueue<Integer> maxPq = new PriorityQueue<>(Collections.reverseOrder());
for (String op : operations) {
StringTokenizer st = new StringTokenizer(op);
String judge = st.nextToken();
int value = Integer.parseInt(st.nextToken());
switch (judge) {
case "I":
pq.offer(value);
maxPq.offer(value);
break;
case "D":
if(pq.size()<1)
break;
if(value > 0){
int max = maxPq.poll();
pq.remove(max);
}else{
int min = pq.poll();
maxPq.remove(min);
}
break;
}
}
if(pq.size() > 0 ) {
answer[0] = maxPq.poll();
answer[1] = pq.poll();
}
return answer;
}
}
'Algorithm > 프로그래머스 고득점 Kit' 카테고리의 다른 글
[고득점 Kit] 문제 풀이를 마치며... (0) | 2022.03.30 |
---|---|
[Heap] 디스크 컨트롤러 - Java코드 ★★★ (0) | 2022.03.25 |
[Heap] 더 맵게 - Java 코드 (0) | 2022.03.24 |
[스택/큐] 주식가격 - Java 코드 ★★★ (0) | 2022.03.03 |
[스택/큐] 다리를 지나는 트럭 - Java코드 ★★★ (0) | 2022.03.03 |