프로그래머스

[프로그래머스] 더 맵게 (java, heap)

해랑쓰 2021. 4. 18. 02:01
728x90
반응형

프로그래머스에서 java를 쓰니 매우 어색하다

네이버 코테 대비로 연습 중 ㅠ javascript 쓸 것 같지만 문자열 처리 나오면 javascript로 해야지

 

-- 풀이

우선순위 큐에 모든 음식을 넣는다.

음식을 모두 섞는데 만약 가장 작은 수가 K 이상이면 조건을 만족하므로 break

아니면 섞는다. 만약 음식이 1개가 남으면 섞지 못하므로 break해주고 마지막 1개 음식이 K를 넘는지 확인한다.

아니면 최종까지 불가능한 것이므로 -1을 리턴해준다.

import java.util.*;
class Solution {
    public int solution(int[] s, int K) {
        int answer = 0;
        PriorityQueue<Integer> pq=new PriorityQueue<>();
        for(int i=0;i<s.length;i++){
            pq.add(s[i]);
        }
        //모든 음식은 2개 이상 있다.
        while(pq.size()>=2){
            int a=pq.poll();
            if(a>=K){
                //최소값이 K를 넘음
                return answer;
            }
            int b=pq.poll();
            int sum=a+b*2;
            pq.add(sum);
            answer+=1;//섞은 횟수
        }
        if(pq.poll()>K)return answer; //마지막에 섞은 것이 성공
        return -1;
    }
    
  
}
728x90
반응형