티스토리 뷰
반응형
프로그래머스 알고리즘 - 더 맵게
음식 중에 가장 덜 매운 2가지의 음식을 반복적으로 선택해야 합니다. 우선순위 큐(Priority Queue)를 사용하면 가장 덜 매운 2가지 음식을 찾기 편합니다. 우선순위 큐에 대한 내용은 이전 포스팅에 있습니다. ☞ 우선순위 큐 - Java에서 다루기
풀이코드 (java)
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
//우선순위 큐에 음식 담아주기
for (int i : scoville) {
priorityQueue.add(i);
}
//가장 덜 매운 음식의 스코빌 지수가 K보다 작다면 반복한다.
while (!priorityQueue.isEmpty() && priorityQueue.peek() < K){
Integer lessSpicy = priorityQueue.poll();
if (!priorityQueue.isEmpty()) {
Integer secondLessSpicy = priorityQueue.poll();
//가장 덜 매운 음식 2가지를 섞고, 다시 큐에 넣는다.
priorityQueue.add(lessSpicy + secondLessSpicy * 2);
answer++;
} else {
return -1;
}
}
return answer;
}
}
반응형
'Algorithm' 카테고리의 다른 글
Codility - Triangle 문제풀이 (6) | 2019.03.19 |
---|---|
코딜리티(Codility) - GenomicRangeQuery (2) | 2019.02.19 |
우선순위 큐 - Java에서 다루기 (0) | 2019.02.13 |
leetcode 알고리즘 - 64. Minimum Path Sum (0) | 2019.01.24 |
참조 투명성, 참조적 투명함수란? (0) | 2019.01.22 |
댓글