https://programmers.co.kr/learn/courses/30/lessons/42626
우선순위 큐를 사용하여 구현함
문제에 주어진 과정에 따라 알고리즘을 구현하였음
import java.util.*;
// 더 맵게
// 우선순위 큐 사용
class Solution {
//10^6
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int i=0; i<scoville.length; i++){
pq.offer(scoville[i]);
}
int newFoodScoville = 0;
int firstFoodScoville = 0;
int secondFoddScoviile = 0;
while(!pq.isEmpty()){
// 현재 pq는 오름차순으로 정렬되있는 상태
// peek() 해서 K보다 크거나 같으면 clear()
if(pq.peek() >= K){
pq.clear();
}
// peek() 해서 K보다 작으면 음식 섞어주고 다시 pq에 추가
else{
if(pq.size() <= 1){
answer = -1;
break;
}
firstFoodScoville = pq.poll();
secondFoddScoviile = pq.poll();
newFoodScoville = firstFoodScoville + (secondFoddScoviile*2);
pq.offer(newFoodScoville);
answer++;
}
}
return answer;
}
}
'Old > Algorithms' 카테고리의 다른 글
[JAVA] 프로그래머스 : 이중우선순위큐 (코딩테스트 고득점 kit > 힙(Heap)) (0) | 2020.07.15 |
---|---|
[JAVA] 프로그래머스 : 라면공장 (코딩테스트 고득점 kit > 힙(Heap)) (0) | 2020.07.15 |
[JAVA] 프로그래머스 : 베스트앨범 (코딩테스트 고득점 kit > 해쉬) (0) | 2020.07.14 |
[JAVA] 프로그래머스 : 기능개발 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.14 |
[JAVA] 프로그래머스 : 쇠막대기 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.14 |