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

AMUD·2022년 9월 15일
0

Algorithm

목록 보기
39/78

문제


문제링크

접근

  • 우선순위큐를 떠올렸다면 거의 해결되는 문제이다.
  • 반복문에서 적당히 연산 후 큐에 넣고 등을 반복하는 로직이 그렇게 어렵지 않게 만들어진다.

소스코드

import java.util.*;

class Main {
    public static void main(String[] args) throws Exception {
        int[] scoville = {1, 2, 3, 9, 10, 12};
        int K = 7;
        Solution sol = new Solution();

        System.out.println("result : " + sol.solution(scoville, K));
    }
}

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        int length = scoville.length;
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        
        for (int i = 0; i < length; i++) {
            pq.offer(scoville[i]);
        }

        while (!pq.isEmpty()) {
            int currNum = pq.poll();

            if (currNum < K && pq.isEmpty()) {
                return -1;
            }
            
            else if (currNum < K) {
                int tmpNum = pq.poll();
                int sum = currNum + tmpNum * 2;
                pq.offer(sum);
                answer++;
            }
        }
        return answer;
    }
}
profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글