728x90
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) {
int[] scoville = {0,1};
int K = 3;
System.out.println(solution(scoville, K));
}
public static int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pQueue = new PriorityQueue<Integer>();
if (scoville.length <= 0) {
return -1;
}
for (int i = 0; i < scoville.length; i++) {
pQueue.add(scoville[i]);
}
while (pQueue.peek() <= K) {
if (pQueue.size() == 1 && pQueue.peek() <= K) {
return -1;
}else if(pQueue.size() == 1) {
return answer;
}
int min = pQueue.poll();
int seconMin = pQueue.poll();
int newS = min + (seconMin * 2);
pQueue.add(newS);
answer += 1;
}
return answer;
}
}
PriorityQueue를 사용하여 쉽게 풀 수 있다고 생각했다가
원하는 스코빌 지수를 절대 만들 수 없는 경우를 생각하지 않고 무턱대고 풀어서 고생 한 문제.
위와 같이 스코빌 지수가 0과 1이 있고 만들어야 하는 스코빌 지수가 3 이라면 절대 도달 할 수 없으므로 -1이 나와야 한다.
아마 테스트 데이터가 주어졌다면 쉽게 풀었을텐데...
조금 더 차분하게 문제를 읽고 풀어야 할 것 같다.
728x90
'알고리즘' 카테고리의 다른 글
[백준] ATM [Java/자바] (0) | 2019.06.15 |
---|---|
[백준] 동전 0 [Java/자바] (0) | 2019.06.15 |
[Java]프로그래머스 카펫 (0) | 2019.04.15 |
[Java]프로그래머스 위장 (0) | 2019.04.15 |
[Java]프로그래머스 쇠막대기 (0) | 2019.04.15 |