본문 바로가기
알고리즘/프로그래머스

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

by justkeepgoing 2021. 1. 8.
728x90
반응형

1. 문제

programmers.co.kr/learn/courses/30/lessons/42626?language=java

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

2. 풀이

  • 맨처음 List를 써서 풀었더니 시간초과가 나와 PriorityQueue를 사용하여 풀었다.

3. 코드

import java.util.*;
class Solution {
    public int solution(int[] scoville, int K) {
       //리스트만 쓰면 효율성 테스트에서 시간초과 나옴
        //PriorityQueue 쓰기로 함
        int answer = 0;
        PriorityQueue<Integer>pq = new PriorityQueue<>();
        for(int i =0; i<scoville.length; i++){
            pq.offer(scoville[i]);
        }
        while (!pq.isEmpty()){
            if(pq.size()<2 || pq.peek()>=K){
                break;
            }
            int a = pq.poll();
            int b = pq.poll();
            int num = a+(b*2);
            pq.offer(num);
            answer++;
        }

        return pq.peek()>=K?answer:-1;
    }
}

 

반응형

 

반응형