문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42626
제한 사항
입출력 예
풀이
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
PriorityQueue<Integer> result = new PriorityQueue<>();
int answer = 0;
for (int i : scoville) result.add(i);
while(result.peek() < K && result.size() != 1) {
result.add(result.poll() + result.poll() * 2);
answer++;
}
return result.peek() < K ? -1 : answer;
}
}
후기
가장 작은 수와 그 다음으로 작은 수를 가져와서 계산하고 그걸 다시 어떤 자료구조에 넣어야 한다. 여기서 떠오르는 자료 구조는? 하면 바로 PriorityQueue가 생각날 것이다. 이걸 쓰면 아주 쉽게 풀 수 있다. 사실 문제 자체도 이해하기 어려운 내용이 없어서 푸는데 힘들진 않았다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
[프로그래머스][JAVA][Lv. 0] 최빈값 구하기 (0) | 2023.09.28 |
---|---|
[프로그래머스][JAVA][Lv. 2] 게임 맵 최단거리 (0) | 2023.09.26 |
[프로그래머스][JAVA][Lv. 2] 주차 요금 계산 (0) | 2023.09.24 |
[프로그래머스][JAVA][Lv. 2] n진수 게임 (0) | 2023.09.23 |
[프로그래머스][JAVA][Lv. 2] 압축 (0) | 2023.09.22 |