알고리즘 문제 풀이 / 프로그래머스 (programmers) - 더 맵게
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42626
문제 풀이
'우선순위 큐' 를 이용한다.
K이상이 안된다면 -1을 아니면 answer을 출력한다.
이 문제를 보자마자 queue로 풀면 좋겠다는 생각을 했다. 우선순위 큐로 푼다면 poll() 할 때 마다 제일 작은 스코빌 지수가 나올테니 그렇게 꺼낸 값을 계산해서 다시 queue에 넣어주면 된다. 그래서 제일 작은 값이 K이상이거나 스코빌을 모두 섞어도 안되면 while 문을 빠져나오면 되는 간단한 문제였다.
public static int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> queue = new PriorityQueue<Integer>();
for(int sco : scoville) {
queue.add(sco);
}
int reSco = 0;
while(queue.peek() < K && queue.size() > 1) {
reSco = queue.poll() + queue.poll() * 2;
queue.add(reSco);
answer++;
}
answer = queue.peek() < K ? -1 : answer;
return answer;
}
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers/Lv.3] 최고의 집합 - Java (0) | 2022.12.08 |
---|---|
[programmers/Lv3] 브라이언의 고민 - Java (0) | 2022.06.20 |
[Programmers/위클리 챌린지] 1주차_부족한 금액 계산하기 - Java (0) | 2021.09.09 |
[Programmers/2018 KAKAO BLIND RECRUITMENT] 캐시 - Java (0) | 2021.08.19 |
[Programmers/Lv2) 구명보트 - Java (0) | 2021.08.10 |
댓글