다희의 코딩 성장일기
[프로그래머스] level2. 더 맵게 (자바 JAVA) 본문
[ 문제 ] [프로그래머스] level2. 더 맵게 (자바 JAVA)
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42626?language=java
# 접근 방법 및 풀이
- 우선순위 큐를 이용해서 풀었다.
- scoville[ ] 배열의 값을 PQ에 저장하면 오름차순으로 정렬되어 저장된다.
- 이때 PQ를 pop하면 가장 작은 수 부터 차례대로 나오므로, 문제 그대로 스코빌 지수를 계산해 다시 PQ에 넣어주면된다.
- 섞인 스코빌 지수는 가장 낮은 수와 그다음 낮은 수 숫자 두개가 필요하므로 숫자 2개를 팝하고 새로 add하는건 1개의 숫자 이므로 PQ의 사이즈는 점차 작아진다.
- 이때 PQ사이즈가 비어있을 때 pop하면 런타임오류가 나기 때문에 이부분에 대한 처리를 해주어야한다.
- 자세한건 코드참조
# 주의할 점
- 스코빌 지수를 K이상 만들 수 없을 때 -1 처리.
- PQ사이즈가 1일 경우 숫자가 한 개 밖에 없기 때문에 스코빌 지수를 만들 수 없음
JAVA 코드
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pqueue = new PriorityQueue<>();
for(int i = 0; i < scoville.length; i++){
pqueue.add(scoville[i]);
}
while(!pqueue.isEmpty()){
int first = pqueue.poll();
if(first >= K)
break;
if(pqueue.isEmpty())
return -1;
else{
int second = pqueue.poll();
answer++;
pqueue.add(first + (second * 2));
}
}
return answer;
}
}
REVIEW
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] level1. 위클리 챌린지 6주차_복서 정렬하기 (자바 JAVA) (0) | 2021.09.14 |
---|---|
[프로그래머스] level2. 예상 대진표 (자바 JAVA) (0) | 2021.09.02 |
[프로그래머스] level2. 주식가격 (자바 JAVA) (0) | 2021.09.02 |
[프로그래머스] level2. 쿼드압축 후 개수 세기 (자바 JAVA) (0) | 2021.09.01 |
[프로그래머스] level2. 위클리 챌린지 5주차 (자바 JAVA) (0) | 2021.08.31 |
Comments