Coding - Algo/Java
[프로그래머스] 더 맵게 (Java 자바)
jainn
2021. 9. 13. 15:08
728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
풀이 및 소스코드
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> s = new PriorityQueue<>();
int n = scoville.length;
for(int i=0;i<n;i++) {
s.add(scoville[i]);
}
//우선순위 큐에 담기
if(s.peek()>=K) return 0;
//peek - > 제일 작은 값이 이미 K 이상이라면 0 리턴
boolean c = false;
//스코빌 지수를 넘겼는지 체크하는 변수
while(true) {
int n1 = s.poll();
int n2 = s.poll();
int k = n1+n2*2;
//스코빌지수 계산 부분
s.add(k);
//계산 된 값을 큐에 집어넣는다.
answer ++;
//1회 실행했으니 1 카운트
if(s.peek()>=K) {
//만약 제일 작은 값이 K를 넘는다면 c = true 후 반복문 종료
c = true;
break;
}
if(s.size()==1) {
//음식이 하나밖에 안남았다면, 지수 확인하기
c = s.peek()>=K ? true:false;
break;
}
}
answer = c == true ? answer:-1;
return answer;
}
}
반응형