프로그래머스 코딩테스트 연습/Level2

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

긷뚜 2021. 5. 6. 12:07
728x90

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

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)

모든 scoville 배열의 값이 섞은 음식의 스코빌 지수 즉 K 값 이상이 되도록 했을때의 연산 횟수를 리턴하는 문제이다

당연히 스코빌 지수가 작은 값부터 연산을 진행 해야 하며 연산이 끝난 값도 다시 작은 값들과 연산을 진행 해야 한다

따라서 PriorityQueue에 모든 배열의 값을 넣고 연산 후에도 Queue에 넣어 오름차순 정렬이 되도록 하여 문제를 풀었다

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;

        PriorityQueue<Integer> pQ = new PriorityQueue<>();

        for(int i : scoville){
            pQ.add(i);
        }

        while(pQ.peek()<K){
            if(pQ.size()==1){return -1;}
            int a = pQ.poll();
            int b = pQ.poll();
            int temp = a+(b*2);
            answer++;
            pQ.offer(temp);

        }
        return answer;
    }
}
728x90