programmers.co.kr/learn/courses/30/lessons/42628
오름차순의 우선순위 큐와 내리차순의 우선순위 큐를 만들고 연산에 따라서 두개의 큐를 셋팅
한쪽 큐에서 꺼낸값으로 remove를 하면 해당 값을 제거함(중복값 인 경우 한개 만 제거)
import java.util.Collections;
import java.util.PriorityQueue;
// 프로그래머스 이증우선순위 큐
class TwoPriorityQueue {
public int[] solution(String[] operations) {
PriorityQueue<Integer> maxQ = new PriorityQueue<>(Collections.reverseOrder());
PriorityQueue<Integer> minQ = new PriorityQueue<>();
for(String op : operations) {
String[] ops = op.split(" ");
String type = ops[0];
int value = Integer.parseInt(ops[1]);
if(type.equals("I")) {
maxQ.offer(value);
minQ.offer(value);
}else {
if(!minQ.isEmpty() && !maxQ.isEmpty()) {
if (value == 1) {
int target = maxQ.poll();
minQ.remove(target);
}else {
int target = minQ.poll();
maxQ.remove(target);
}
}
}
}
int max = 0;
if(!maxQ.isEmpty()) {
max = maxQ.poll();
}
int min = 0;
if(!minQ.isEmpty()) {
min = minQ.poll();
}
return new int[]{max, min};
}
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 등굣길 문제 (자바) (0) | 2021.03.15 |
---|---|
프로그래머스 - 정수삼각형 문제 (자바) (0) | 2021.03.15 |
프로그래머스 - 구명 보트 문제 - 자바 (0) | 2021.03.13 |
프로그래머스 - 섬 연결하기 문제 - 자바 (0) | 2021.03.13 |
프로그래머스 - 가장 큰 수 문제 - 자바 (0) | 2021.03.13 |