[프로그래머스] L3 이중 우선순위 큐
[풀이]
예시 Pic1과 같이 Max Queue, Min Queue를 만든 후 입력에 따라 삭제한다.
주의할 점은 한쪽 큐에서 값을 꺼낼 때, 다른 큐에서도 삭제를 해주어야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import java.util.*;
class Solution {
public int[] solution(String[] opts) {
Queue<Integer> minQ = new PriorityQueue<Integer>();
Queue<Integer> maxQ = new PriorityQueue<Integer>(Collections.reverseOrder());
int size = 0;
for(int i=0; i<opts.length; i++){
char opt = opts[i].split(" ")[0].charAt(0);
int num = Integer.parseInt(opts[i].split(" ")[1]);
if(opt == 'I'){ // 큐에 삽입
maxQ.add(num);
minQ.add(num);
size++;
}else if(size>0){ // 큐에서 제거
System.out.print(num+" ");
if(num == -1){ // 최솟값 삭제
maxQ.remove(minQ.poll());
}else{ // 최댓값 삭제
minQ.remove(maxQ.poll());
}
size--;
}
}
int[] answer = new int[2];
if(size>1){
answer[0] = maxQ.poll();
answer[1] = minQ.poll();
}else if(size==1){
answer[0] = answer[1] = maxQ.poll();
}
return answer;
}
}
|
cs |
'Problem Solving' 카테고리의 다른 글
[프로그래머스] L3 매칭점수 / 2019 카카오 블라인드 채용 (Java) (0) | 2021.01.04 |
---|---|
[프로그래머스] L3 보석 쇼핑 / 2020 카카오 인턴십 (Java) (0) | 2021.01.04 |
[LeetCode] Word Search (Medium) (1) | 2021.01.03 |
[프로그래머스] L3 불량 사용자 / 2019 카카오 겨울 인턴십 (Java) (0) | 2020.12.22 |
[프로그래머스] L3 셔틀버스 / 2018 카카오 블라인드 채용 (Java) (0) | 2020.12.22 |
댓글