https://programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
저는 힙을 통해서 가장 낮은 값을 가져왔습니다. 그리고 이 값이 k보다 작다면 힙에서 하나 더 꺼내어 이를 공식에 대입하고 힙에 다시 넣었습니다.
마지막으로 -1이 되는 조건인 값이 k보다 작고 힙에 다른 값이 없을 때 입니다.
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> p = new PriorityQueue<>();
for(int num : scoville){
p.offer(num);
}
while(true){
int num = p.peek();
if(num >= K){
break;
}else{
answer++;
if(p.size() <= 1){
answer = -1;
break;
}
int num1 = p.poll();
int num2 = p.poll();
p.offer(num1 + 2*num2);
}
}
return answer;
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 신규 아이디 추천(JAVA) (0) | 2021.12.26 |
---|---|
프로그래머스 행렬 테두리 회전 (JAVA) (0) | 2021.12.25 |
백준 13913번 숨바꼭질 4 (JAVA) (0) | 2021.12.23 |
백준 17070번 파이프 옮기기1 (JAVA) (0) | 2021.12.22 |
백준 1167번 트리의 지름(JAVA) (0) | 2021.12.21 |