[programmers] 힙_더 맵게
2025. 1. 21. 20:45ㆍ코딩테스트
더 맵게
https://school.programmers.co.kr/learn/courses/30/lessons/42626
문제 설명
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다.
// 정확성 O
// 효율성 X
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
ArrayList<Integer> scovilleList = new ArrayList<>();
for (int sco : scoville) {
scovilleList.add(sco);
}
while(scovilleList.size() > 1){
Collections.sort(scovilleList);
if(scovilleList.get(0)<K){
scovilleList.set(1,scovilleList.get(0)+scovilleList.get(1)*2);
scovilleList.remove(0);
answer++;
} else{
return answer;
}
}
return scovilleList.get(0)<K ? -1 : answer;
}
}
// 정확성 O
// 효율성 X
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> scovillePQ = new PriorityQueue<>();
for(int sco : scoville){
scovillePQ.add(sco);
}
while(scovillePQ.size() > 1){
int sco1 = scovillePQ.poll();
if (sco1<K){
scovillePQ.add(sco1+scovillePQ.poll()*2);
answer++;
} else{
return answer;
}
}
return scovillePQ.poll() < K ? -1 : answer;
}
}
TIL
PriorityQueue
참고
'코딩테스트' 카테고리의 다른 글
[programmers] 스택/큐_프로세스 (0) | 2025.02.17 |
---|---|
[programmers] 스택/큐_기능개발 (0) | 2025.02.16 |
[programmers] 해시_베스트앨범 (0) | 2025.02.15 |
[programmers] 해시_전화번호 목록 (0) | 2025.02.15 |
[programmers] 해시_완주하지 못한 선수 (1) | 2025.01.19 |