본문 바로가기
Coding Test/Programmers

[프로그래머스] 더 맵게 [JAVA(자바)]

‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀

문제 👉 <코딩테스트 연습 - 더 맵게 | 프로그래머스>

1. 문제

  1. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 한다.
  2. 섞은 스코빌 지수 = 가장 낮은 스코빌 지수 + (두 번째로 낮은 스코빌 지수 * 2)

2. 풀이

PriorityQueue 를 이용한 문제 풀이

  • 음식의 스코빌 지수를 오름차순으로 유지하기 위해 PriorityQueue 로 나타낸다.
  1. 음식의 개수가 2개 미만이 되면 더이상 섞을 수 없으므로 -1을 리턴한다.
  2. PriorityQueue 를 통해 제일 작은 스코빌 지수가 K 보다 작으면 음식을 섞고 다시 PriorityQueue 에 추가한다.

3. 코드

import java.util.*;
class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;

        PriorityQueue<Integer> pq = new PriorityQueue<>();
        for (int s : scoville) pq.offer(s);

        while (pq.peek() < K) {
            if (pq.size() < 2) return -1;
            pq.offer(pq.poll() + (pq.poll() * 2));
            answer++;
        }

        return answer;
    }
}

 


References

  •  

🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋

댓글