본문 바로가기

코딩테스트/programmers

더 맵게

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

 

프로그래머스

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

programmers.co.kr

 

섞은 음식의 스코빌 지수를 구할 때 가장 맵지 않은 음식의 지수와 두번째로 맵지 않은 음식의 지수를 구분해야함을 주의해야한다.

 

왜냐면 두번쨰로 맵지 않은 음식의 지수의 두배를 곱해야 하기 때문..

 

처음엔 단순히 queue를 사용했다가 통과한 케이스보다 통과하지 못한 케이스가 더 많아 한참 고민했다 ㅎ_ㅎ

 

결론은 priorityqueue를 사용하자...

 

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        
        Arrays.sort(scoville);
        
        PriorityQueue<Integer> q = new PriorityQueue();
        for (int i = 0; i < scoville.length; i++) {
            q.add(scoville[i]);
            if (scoville[i] >= K) break;
        }
                
        int count = 0;
        while(!q.isEmpty()) {
            
            int left = q.poll();
            if (left >= K) break;
            
            if (q.isEmpty()) return -1;
            
            int right = q.poll();
            
            int mix = left + right * 2;
            
            q.offer(mix);
            
            count++;
        }
        
        return count;
        
    }
}

 

'코딩테스트 > programmers' 카테고리의 다른 글

땅따먹기  (0) 2023.10.25
주차 요금 계산  (0) 2023.10.25
모음사전  (0) 2023.10.23
게임 맵 최단거리  (0) 2023.10.23
n진수 게임  (1) 2023.10.18