1. 문제
2. 문제 풀이
스코빌지수가 가장 낮은 2개의 음식을 뽑아서 새로운 음식을 만들어서 우선순위 큐에 계속 넣어주고, 가장 스코빌지수가 낮음 음식이 주어진 K와 같거나 커지면 몇번만에 K 이상으로 만들었는지 반환해주는 간단한 문제였다. 코드를 보면 크게 설명할게 없다는 것을 알 수 있다.
import java.util.*;
class Solution {
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
int answer = 0;
public int solution(int[] scoville, int K) {
for(int i=0;i<scoville.length;i++){
priorityQueue.add(scoville[i]);
}
while(true){
answer++;
int size = priorityQueue.size();
if(size == 1){
answer = -1;
break;
}
int x = priorityQueue.poll();
int y = priorityQueue.poll();
int mixScoville = x + y*2;
priorityQueue.add(mixScoville);
int frontScoville = priorityQueue.peek();
if(K <= frontScoville){
break;
}
}
return answer;
}
}
'Algorithm' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 등굣길 (동적 계획법) (0) | 2020.10.07 |
---|---|
[알고리즘] 프로그래머스 - 정수 삼각형 (동적 계획법) (0) | 2020.10.06 |
[알고리즘] 프로그래머스 - 디스크 컨트롤러(힙) (0) | 2020.08.18 |
[알고리즘] 프로그래머스 - 여행경로(dfs/bfs) (0) | 2020.08.08 |
[알고리즘] 프로그래머스 - 단어변환 (dfs/bfs) (0) | 2020.08.08 |