Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 내용
https://school.programmers.co.kr/learn/courses/30/lessons/42626
풀이
나의 풀이
- 최소힙을 활용하면 간단하게 풀 수 있다.
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
// 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)
// 모든 음식의 스코빌 지수가 K 이상이 될때까지 반복하며 그 횟수를 누적 -> 누적횟수=답
// 최소 힙에 데이터 넣어서 정렬
// 최악으로 안 매운 음식과 차악으로 안 매운 음식을 poll() 한 뒤 공식 계산
// 위를 반복하되 경우의 수가 2개 있음
// 1) 최악 스코빌 지수가 K 이상이 된 경우 -> break 한 후 누적횟수 반환
// 2) 스코빌 지수가 K 이상으로 만들 수 없는 경우 -> -1 반환
int answer = 0;
PriorityQueue<Integer> que = new PriorityQueue<>();
for(int s : scoville) que.offer(s);
int firWorst = 0;
int secWorst = 0;
int newScoville = 0;
while(K > que.peek()) {
if(que.size() == 1) return -1;
firWorst = que.poll();
secWorst = que.poll();
newScoville = firWorst + (secWorst*2);
que.offer(newScoville);
answer++;
}
return answer;
}
}
'Dev > PS' 카테고리의 다른 글
[프로그래머스-코딩테스트 연습] 이중우선순위큐 (0) | 2023.12.07 |
---|---|
[프로그래머스-코딩테스트 연습] 디스크 컨트롤러 (0) | 2023.12.07 |
[프로그래머스-코딩테스트 연습] 주식가격 (0) | 2023.12.05 |
[프로그래머스-코딩테스트 연습] 다리를 지나는 트럭 (1) | 2023.12.05 |
[프로그래머스-코딩테스트 연습] 프로세스 (0) | 2023.12.05 |