이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라.
-> 자세한 내용 보러가기
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
int[] answer = new int[N];
//스테이지별로 실패율을 저장할 배열
double[] failStages = new double[N + 2];
//각 스테이지 별로 실패한 사람을 넣음
for(int stage : stages){
failStages[stage]++;
}
//최초 스테이지에서 도전한 사람은 stages의 길이
int totalPeople = stages.length;
for(int idx = 1; idx <= N+1; idx++){
if(totalPeople == 0){
failStages[idx] = 0;
}else{
int fail = (int) failStages[idx];
failStages[idx] = failStages[idx] / totalPeople;
totalPeople -= fail;
}
}
//스테이지를 저장할 리스트
List<Integer> list = new ArrayList<>();
for(int idx = 1; idx <=N; idx++){
list.add(idx);
}
//리스트를 실패율을 기준으로 정렬한다
Collections.sort(list, (a, b) -> {
if (failStages[b] == failStages[a]) {
return Integer.compare(a, b);
} else {
return Double.compare(failStages[b], failStages[a]);
}
});
for(int idx = 0; idx < N; idx++){
answer[idx] = list.get(idx);
}
return answer;
}
}