안드 공부를 해볼까?

[Java] 프로그래머스 더 맵게 본문

알고리즘/프로그래머스

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

문바리 2022. 5. 5. 07:55
728x90

1. 문제 파악

Leo가 모든 음식의 스코빌 지수를 K 이상 만들고 싶다고 한다.

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

즉, 가장 작은 2개의 숫자를 가져와 위의 공식에 넣어주면 된다.

구현 방식은 많겠지만 나는 우선순위 큐를 사용해서 배열의 모든 원소들을 넣어주고 위의 공식을 사용했다.

2. 구현

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> p = new PriorityQueue<>();
        
        //스코빌 데이터 넣어주기
        for(int scovilleData : scoville){
            p.offer(scovilleData);
        }
    
        //최소 스코빌 지수가 K보다 작다면 반복
        while(p.peek() < K){
            
            //만약 1개만 남았으면 종료
            if(p.size() == 1){
                return -1;
            }
            
            //계산 후 데이터 넣어주기
            int newScoville = p.poll() + (p.poll() * 2);
            p.offer(newScoville);
            answer++;
        }
        return answer;
    }
}

딱히 어렵다고 생각하는 부분은 없다. 주석을 잘 보면 바로 이해할 수 있다.

3. 마무리

취업 준비를 하면서 알고리즘 실력이 많이 부족하다고 느껴서 정리글 작성을 시작했다.

1일 1알고리즘, 1일 1커밋으로 취업까지 쭈욱 달려보고싶다.

반응형
Comments