https://school.programmers.co.kr/learn/courses/30/lessons/42628
우선순위큐 2개를 사용해서 풀 수 있는 문제 (하나는 오름차순 정렬, 다른 하나는 내림차순 정렬)
PriorityQueue<Integer> q = new PriorityQueue<>();
PriorityQueue<Integer> q2 = new PriorityQueue<>(Collections.reverseOrder());
** queue에서 특정 값을 지우는 것은 -> quque.remove(값) **
import java.util.*;
public class P3 {
public static void main(String[] args){
P3 p = new P3();
String[] operations = {"I -45", "I 653", "D 1", "I -642", "I 45", "I 97", "D 1", "D -1", "I 333"};
for(int x : p.solution(operations)){
System.out.print(x+" ");
}
}
public int[] solution(String[] operations) {
int[] answer = new int[2];
PriorityQueue<Integer> q = new PriorityQueue<>();
PriorityQueue<Integer> q2 = new PriorityQueue<>(Collections.reverseOrder());
for(int i=0; i<operations.length; i++){
if(operations[i].startsWith("I")){
q.add(Integer.parseInt(operations[i].split(" ")[1]));
q2.add(Integer.parseInt(operations[i].split(" ")[1]));
} else{
if(!q.isEmpty()){
if(operations[i].equals("D -1")){
int tmp = q.poll();
q2.remove(tmp);
} else {
int tmp = q2.poll();
q.remove(tmp);
}
}
}
}
if(q.isEmpty()){
answer[0] = 0;
answer[1] = 0;
} else {
answer[0] = q2.peek();
answer[1] = q.peek();
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 소수 찾기_자바 (0) | 2022.12.02 |
---|---|
[프로그래머스] 가장 큰 수_자바 (0) | 2022.12.01 |
[프로그래머스] 프린터_자바 (0) | 2022.11.30 |
[프로그래머스] 위장_자바 (0) | 2022.11.26 |
[프로그래머스] 폰켓몬_자바 (0) | 2022.11.25 |