https://programmers.co.kr/learn/courses/30/lessons/42626
.
[문제]
[풀이]
낮은 스코빌 지수의 음식 2개를 뽑아서 새로운 음식을 만드는데 스코빌 지수가 K 보다 높을 떄 까지 반복한다.
계속 해서 낮은 수치의 값이 필요하므로 우선순위큐를 사용.
음식을 섞으려면 2개를 뽑아야 하는데 2개가 없다면 -1 를 리턴
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
29
30
31
32
33
34
35
|
import java.util.*;
import java.io.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Solution sol = new Solution();
int result = sol.solution(new int[]{1, 2, 3, 9, 10, 12}, 7);
System.out.println("result = " + result);
}
}
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pq = Arrays.stream(scoville).boxed()
.collect(Collectors.toCollection(PriorityQueue::new));
while (pq.peek()<K && !pq.isEmpty()){
Integer cur = pq.poll();
if(pq.isEmpty()) return -1;
pq.add(cur+(pq.poll()*2));
answer++;
}
return pq.peek()>=K ? answer:-1;
}
}
|
cs |
'알고리즘,PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [Level2] k진수에서 소수 개수 구하기JAVA (0) | 2022.02.04 |
---|---|
[프로그래머스] [Level1] 신고결과받기 JAVA (0) | 2022.02.02 |
[프로그래머스] [Level3] 등굣길 JAVA (0) | 2021.11.27 |
[프로그래머스] [Level2] 거리두기 확인하기 JAVA (0) | 2021.11.17 |
[프로그래머스] [Level2] 순위 검색 JAVA (0) | 2021.11.16 |