티스토리 뷰

1. 문제

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

 

코딩테스트 연습 - 더 맵게

매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같��

programmers.co.kr

 

2. 설명

우선순위 큐를 사용해서 풀었다!

처음에 리스트 사용해서 정렬하는 방식으로 풀었는데

효율성 이전에 정확성에서 틀려버리더라

왜그런지는 모르겠다.

 

3. 코드

import java.util.PriorityQueue;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        for(int i : scoville)
            pq.add(i);
        
        while(pq.peek()<K) {
            if(pq.size()==1) return -1;
            
            int n = pq.poll() + pq.poll()*2;
            pq.add(n);
            
            answer++;
        }
        
        return answer;
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday