알고리즘 문제 풀이/프로그래머스

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

노루스름한맛 2023. 7. 2. 18:05

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

설명

입출력

나의 풀이

풀이 과정

우선순위 큐를 사용해서 오름차순으로 정렬된 큐를 구현한 후

while문을 돌며 2개씩 poll을 하고 문제에 나온 식대로 섞어주었다. 

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        int x = -1;
        int y = -1;
        int new_sco = -1;

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

        for(Integer sco: scoville) {
            q.offer(sco);
        }

        while ( q.peek() < K ) {
            x = q.poll();
            y = q.poll();
            new_sco = x + ( y * 2 );
            q.offer(new_sco);
            answer++;

             if ( q.size() == 1 && q.peek() < K ) {
                 answer = -1;
                 break;
             }
        }
        return answer;
    }
}