https://programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
우선순위 큐를 활용하여 해결 가능한 문제이며, Java 의 경우에는 PriorityQueue 를 사용하여 코드를 작성하였습니다.
최대 계산 가능한 loop 횟수는 scoville 배열 원소 개수 - 1 개 이며, 우선순위 큐의 (첫번째 원소 + (두번째 원소 * 2)) 값을 계산하여 다시 우선순위 큐에 넣고 모든 원소가 K 값보다 클 경우에 count 를 계산하는 것이 이 문제의 목적입니다.
(예제 코드)
import java.util.*;
class Solution {
public static int solution(int[] scoville, int K) {
int answer = -1;
PriorityQueue<Integer> pq = new PriorityQueue<>();
for (int elem : scoville) {
pq.add(elem);
}
for (int i = 0; i < scoville.length-1; i++) {
int first = pq.poll();
int second = pq.poll();
pq.add(first + (second * 2));
if (pq.peek() >= K) {
return i+1;
}
}
return answer;
}
}
'코딩테스트' 카테고리의 다른 글
| [프로그래머스] 키패드 누르기 (0) | 2022.04.07 |
|---|---|
| [프로그래머스] 베스트앨범 (0) | 2022.03.30 |
| [프로그래머스] 전화번호 목록 (0) | 2022.03.29 |
| [프로그래머스] 단어 변환 (0) | 2022.03.29 |
| [프로그래머스] H-index (0) | 2022.03.29 |