반응형
MaxHeap MinHeap 두개만들어서 사용하면된다.
java에서는 remove함수가 잇어서 log(n)으로 제거가능하다. 따라서 시간초과 걱정 X
package excercise;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.StringTokenizer;
public class 이중우선순위큐 {
public int[] solution(String[] operations) {
Queue<Integer> MinHeap = new PriorityQueue<>();
Queue<Integer> MaxHeap = new PriorityQueue<>(Comparator.reverseOrder());
int[] answer = new int[2];
for (String operation : operations) {
StringTokenizer st = new StringTokenizer(operation);
String order = st.nextToken();
int num = Integer.parseInt(st.nextToken());
if (order.equals("I")) {
MinHeap.add(num);
MaxHeap.add(num);
} else if (!MaxHeap.isEmpty()) {
if (num == 1) {
int max = MaxHeap.poll();
MinHeap.remove(max);
} else {
int min = MinHeap.poll();
MaxHeap.remove(min);
}
}
}
if (MinHeap.isEmpty()) {
answer[0] = 0;
answer[1] = 0;
} else {
answer[0] = MaxHeap.poll();
answer[1] = MinHeap.poll();
}
return answer;
}
}
반응형
'ProgramSoliving' 카테고리의 다른 글
프로그래머스 : 섬 연결하기 (0) | 2020.12.23 |
---|---|
프로그래머스 : 모의고사 (0) | 2020.12.21 |
프로그래머스 : 디스크컨트롤러 (0) | 2020.12.18 |
프로그래머스 : 프린터 (0) | 2020.12.17 |
프로그래머스 : 더맵게 (0) | 2020.12.17 |