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

업데이트:

📚 더 맵게

링크📎 : https://programmers.co.kr/learn/courses/30/lessons/42626?language=java

난이도 ⭐️⭐️

📖 문제

이미지 이미지

📝 내 풀이

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> pq = new PriorityQueue<>();
              
        for(int i : scoville)
            if(i<K) pq.add(i);
        
        while(pq.peek() < K){
            if(pq.size()==1) return -1;
            
            pq.add(pq.poll() + pq.poll()*2);
            answer++;
        }
    
        return answer;
    }
}

👊🏻 내 전략

  1. 효율을 위해 scoville 배열에서 K를 초과하는 수는 배제시킨다.
  2. 처음에는 ArrayList를 사용하였으나, 효율성 통과를 하지 못한다.
  3. 우선 순위 Queue를 사용하자.
    • 제일 우선 순위가 되는 1개만 고려하는 queue이며,
    • 나중에 자세히 다루겠다.

끝-!

댓글남기기