본문 바로가기
알고리즘

[Java]프로그래머스 더 맵게

by irerin07 2019. 4. 24.
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