Java - [프로그래머스]42626 - 더 맵게

Paek·2023년 8월 12일
0

코테공부 자바

목록 보기
12/25

출처

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

문제


모든 음식의 스코빌 지수가 담긴 배열이 주어지고, 가장 작은것과 그 다음으로 작은것을 조합해 모든 스코빌 지수가 K이상으로 되도록 하는 문제입니다.

풀이

가장 작은것과 두번째로 작은것을 추출해와야 한다는 것을 보고 PriorityQueue를 떠올렸습니다. 우선순위 큐에 넣으면 계속 크기별로 정렬되어 따로 정렬을 할 필요가 없기 떄문입니다.

그렇게 우선순위 큐에 2개 이상이 들어있고 맨 앞 원소가 K 이상이 될 때 까지 반복해주었습니다.

코드

import java.util.*;
class Solution {
    public int solution(int[] scoville, int K) {
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        int answer = 0;
        for(int x: scoville) {
            pq.add(x);
        }
        while(pq.peek() < K && pq.size() >= 2){
            int x = pq.poll();
            int y = pq.poll();
            pq.add(x + y*2);
            answer++;
        }
        return pq.peek() >= K ? answer : -1;
    }
}
profile
티스토리로 이전했습니다. https://100cblog.tistory.com/

0개의 댓글