sudo code
섞은 음식의 스코빌 지수 =
가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)
섞은 음식의 스코빌 지수 >= k => return mixCount
int[] scoville을 arraylist로 바꾸고
최대로 섞는 횟수는 scoville.length - 1
반복문
{
오름차순으로 sort
mixScoville = 가장 덜 매운것 + 두번째 * 2
섞은게 K보다 스코빌지수가 높거나 같으면 시도 횟수 return
높지 않다면?
sort를 했으므로 앞에 0, 1요소 삭제
mixScoville add해주기
}
조건 미흡시 return -1
1차 시도
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] scoville, int K){
int allMixcase = scoville.length - 1;
int mixScoville = 0;
ArrayList<Integer> tempScoville = (ArrayList<Integer>) Arrays.stream(scoville)
.boxed().collect(Collectors.toList());
for(int cnt = 0; cnt < allMixcase; cnt++)
{
Collections.sort(tempScoville);
mixScoville = tempScoville.get(0)+tempScoville.get(1)*2;
if(mixScoville >= K) return cnt+1;
else
{
tempScoville.remove(0);
tempScoville.remove(0);
tempScoville.add(0,mixScoville);
}
}
return -1;
}
}
채점 결과
정확성: 28.6
효율성: 0.0
합계: 28.6 / 100.0
2차시도 - 문제 요구사항을 좀 더 읽어봤습니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] scoville, int K){
int allMixcase = scoville.length-1;
int mixScoville = 0;
ArrayList<Integer> tempScoville = (ArrayList<Integer>) Arrays.stream(scoville)
.boxed().collect(Collectors.toList());
Collections.sort(tempScoville);
if(tempScoville.get(0) >= K) return 0; // 최소가 k보다 클 경우
for(int cnt = 0; cnt < allMixcase; cnt++)
{
mixScoville = tempScoville.get(0)+(tempScoville.get(1)*2);
tempScoville.remove(0);
tempScoville.remove(0);
tempScoville.add(mixScoville);
Collections.sort(tempScoville);
if(tempScoville.get(0) >= K) return cnt+1;
}
return -1;
}
}
(정확성 다 맞고 효율성 다 틀리기)
정확성: 76.2
효율성: 0.0
합계: 76.2 / 100.0
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - [1차] 추석 트래픽 (0) | 2021.04.07 |
---|---|
[프로그래머스] - 타겟 넘버 (0) | 2021.04.06 |
[프로그래머스] - 여행경로 (0) | 2021.03.31 |
[백준 온라인 저지] - 베스트셀러 (0) | 2021.03.26 |
[프로그래머스] - 오픈채팅방 (0) | 2021.03.23 |