본문 바로가기

알고리즘

프로그래머스(Level 2) - 더 맵게

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

 

프로그래머스

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

programmers.co.kr

heap과 관련한 문제를 풀어보았습니다. 개념에 대한 공부를 먼저 하고 우선순위 큐라는 자료구조를 미리 알았기 때문에 쉽게 풀 수 있었습니다.

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        int temp = 0;
        PriorityQueue<Integer> heap = new PriorityQueue<>();
        
        for(int i: scoville){
            heap.offer(i);
        }
        
        while(true){
            
            if(heap.peek() >= K)
                break;
            
            if(heap.peek() == 0 || heap.size() == 1){
                return -1;
            }
            
            int min = heap.poll();
            int second = heap.poll();
            
            temp = min+ 2*second;
            
            heap.offer(temp);
            answer++;
        }
        return answer;
        
    }
}