[ 프로그래머스 ] #42889 : 실패율 - JAVA

🔗 실패율

import java.util.*;
class Solution {
    public int[] solution(int N, int[] stages) {
        // N : 전체 스테이지 개수
        // stages : 사용자 당 현재 멈춰있는 스테이지 번호
        // 실패율이 높은 스테이지부터 스테이지 번호 정렬
        //실패율 
        //=스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수/스테이지에 도달한 플레이어 수

        // 스테이지 당 실패율
        Map<Integer,Double> fail=new HashMap<>();

        for(int i=0;i<N;i++){
            int []cnt=clearCnt(stages,i);
            if(cnt[0]+cnt[1]!=0){
                fail.put(i+1,(double)cnt[0]/(cnt[0]+cnt[1]));
            }
            else{
                fail.put(i+1,0.0);
            }
        }
        return fail.entrySet().stream()
            .sorted((o1,o2)->Double.compare(o2.getValue(),o1.getValue()))
            .mapToInt(HashMap.Entry::getKey).toArray();
    }
    private int[] clearCnt(int []stages, int currentStage){
        int []cnt=new int [2];
        for(int i=0;i<stages.length;i++){

                int stage=stages[i]-1;// 현 사용자의 스테이지
                if(currentStage<stage){
                    cnt[1]++;//현 스테이지를 클리어한 사용자 수
                }
                else if(currentStage==stage){
                    cnt[0]++;//도달했지만 클리어 못한 사용자 수
                }

        }
        return cnt;
    }
}