Development Logs/Algorithms
[JAVA] 프로그래머스 : 더 맵게 (코딩테스트 고득점 kit > 힙(Heap))
유뱅유뱅뱅
2020. 7. 15. 17:48
반응형
https://programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같��
programmers.co.kr
우선순위 큐를 사용하여 구현함
문제에 주어진 과정에 따라 알고리즘을 구현하였음
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;
}
}
반응형