Lewis's Tech Keep
[프로그래머스] 이중우선순위 본문
우선순위 큐의 min, max 값을 그냥 이용하기만 하면 됐던 문제
maxHeap -> min 은 maxHeap의 가장 마지막 값
min 값 뽑아내는 과정이 조금 마음에 들지 않지만 나중에 이 부분은 한번 더 해보자
더보기
import java.util.*;
class Solution {
static int findMinimumElement(PriorityQueue<Integer> maxHeap) {
int min = maxHeap.peek();
for(Integer num: maxHeap) {
if(min > num) {
min = num;
}
}
maxHeap.remove(min);
return min;
}
public int[] solution(String[] operations) {
int[] answer = new int[2];
PriorityQueue<Integer> maxHeap= new PriorityQueue<>((a,b)->b-a);
for(String operation: operations) {
String command = operation.split(" ")[0];
int num = Integer.parseInt(operation.split(" ")[1]);
if(command.equals("I")) {
maxHeap.offer(num);
} else if(maxHeap.size() > 0 && command.equals("D")) {
if(num == 1) {
// 최대값 삭제
maxHeap.poll();
// System.out.println(maxHeap.poll());
} else if (num == -1) {
// 최소값 삭제
findMinimumElement(maxHeap);
// System.out.println(findMinimumElement(maxHeap));
}
}
}
int heapSize = maxHeap.size();
if(heapSize > 1) {
answer[0] = maxHeap.peek();
answer[1] = findMinimumElement(maxHeap);
}
return answer;
}
}
'Java > 알고리즘' 카테고리의 다른 글
[프로그래머스] 단어 변환 (0) | 2021.02.01 |
---|---|
[프로그래머스] 네트워크 (0) | 2021.01.30 |
[프로그래머스] 타겟 넘버 (0) | 2021.01.28 |
[프로그래머스] 오답 - 디스크 컨트롤러 (0) | 2021.01.27 |
[프로그래머스] 기능개발 (0) | 2021.01.22 |
Comments