[JAVA/프로그래머스] 힙(Heap)_더 맵게

👀 문제

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

👊 첫 번째 도전

1. 설계

  1. 가장 맵지 않은, scoville이 낮은 원소를 사용하므로 우선순위가 낮은 순서로 정렬, 리턴하는 우선순위큐를 사용한다.
  2. 하나라도 K보다 작다면, 주어진 공식을 이용해 새 조합을 만든다.

2. 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.PriorityQueue;
/**
 *
 * @author HEESOO
 *
 */
 class Solution {
     public int solution(int[] scoville, int K) {
         int answer = 0;
         int a,b;
         PriorityQueue<Integer> pq=new PriorityQueue<>();
         for(int i:scoville){
             pq.offer(i);
         }
         while(pq.peek()<K){
             if(pq.size()==1){
                 return -1;
             }
             else{
                 a=pq.poll();
                 b=pq.poll();
                 pq.offer(a+(b*2));
                 answer++;
             }
         }
         return answer;
     }
 }
  • PriorityQueue pq: 스코빌 지수가 낮은 순으로 뽑을 수 있게 우선순위큐를 사용한다.

3. 결과

실행결과 🤟 성공 🤟

👏 해결 완료!

우선순위큐를 사용할 기회가 별로 없었는데, 이번을 통해 사용하는 법을 배워야겠다.