본문 바로가기
Algorithm/프로그래머스풀이

[알고리즘 문제풀이] 프로그래머스 - 더 맵게 / JAVA(자바)

by 계범 2022. 3. 7.

https://programmers.co.kr/learn/courses/30/lessons/42626

 

코딩테스트 연습 - 더 맵게

매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같

programmers.co.kr

 

우선순위 큐 사용 풀이

 

/**
    1. 우선순위 큐로 음식을 넣고,
    
    2. 큐의 사이즈가 2이상이면서 가장 앞의 원소가 k보다 적을 때 2개를 빼서 더해서 넣기
    2-1) 첫번째 원소 + 두번째원소*2
       
    3. 큐의 맨 앞의 원소가 k보다 같거나 크면 섞은 횟수 반환
    
    4. 불가능하면 -1 반환
**/

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        
        PriorityQueue<Integer> q = new PriorityQueue<>();
        
        for(int s : scoville){
            q.offer(s);
        }
        
        int cnt = 0;
        while(q.size() > 1 && q.peek() < K){
            int a = q.poll();
            int b = q.poll()*2;
            q.offer(a+b);
            cnt++;
        }
        
        return q.peek() < K ? -1 : cnt;
    }
}

 

댓글