Algorithm
프로그래머스
Java
실패율

실패율

https://school.programmers.co.kr/learn/courses/30/lessons/42889?language=java (opens in a new tab)

풀이

import java.util.*;
 
class Solution {
    public int[] solution(int N, int[] stages) {
        // 스테이지별 도전자 수를 구함 (N + 1 스테이지(마지막까지 클리어한 사용자)가 들어가기 때문에 + 2를 해줌)
        int[] challenger = new int[N + 2];
 
        for (int i = 0; i < stages.length; i++) {
            challenger[stages[i]] += 1;
        }
 
        // 스테이지별 실패한 사용자 수 계산
        HashMap<Integer, Double> failRates = new HashMap<Integer, Double>();
        double total = stages.length;
 
        for (int i = 1; i <= N; i++) {
            if (challenger[i] == 0) {
                failRates.put(i, (double) 0); // double 입력할 때는 0. 또는 (double) 0
            } else {
                failRates.put(i, challenger[i] / total);
                total -= challenger[i]; // 지금 빠진 도전자들 제외
            }
        }
 
        return failRates.entrySet()
                .stream()
                .sorted((rate1, rate2) -> Double.compare(rate2.getValue(), rate1.getValue()))
                .mapToInt(Map.Entry::getKey)
                .toArray();
    }
}