알고리즘
프로그래머스 - 실패율
계양 꿀주먹
2024. 4. 29. 18:24
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
int[] challenge = new int[N + 1]; // 도전한 사람 수
double[] fail = new double[N + 1]; // 실패율
int num = stages.length; // 총 사용자 수
Map<Integer, Double> map = new HashMap<>();
for(int stage : stages) {
for(int i = 0; i < stage; i++) challenge[i]++; // 스테이지에 도전한 사람 수
fail[stage - 1]++; // 스테이지에 머무르는 사람 수
}
// 실패율 구하기
for(int i = 0; i < fail.length - 1; i++) {
if(challenge[i] != 0) fail[i] = (double) fail[i] / challenge[i];
map.put(i + 1, fail[i]); // 스테이지, 실패율
}
List<Integer> result = new ArrayList<>(map.keySet());
// 내림차순 정렬
result.sort((o1, o2) -> map.get(o2).compareTo(map.get(o1)));
return result.stream().mapToInt(Integer::intValue).toArray();
}
}
Map에서 value 기준으로 정렬하기가 어려웠던 문제입니다...
모든 스테이지를 클리어한 사람이 있기 때문에 배열을 만들 때, N + 1로 하여 생성했습니다.