👀 문제
https://programmers.co.kr/learn/courses/30/lessons/42626
👊 첫 번째 도전
1. 설계
- 가장 맵지 않은, scoville이 낮은 원소를 사용하므로 우선순위가 낮은 순서로 정렬, 리턴하는 우선순위큐를 사용한다.
- 하나라도 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. 결과
🤟 성공 🤟
👏 해결 완료!
우선순위큐를 사용할 기회가 별로 없었는데, 이번을 통해 사용하는 법을 배워야겠다.