실패율

문제


문제 풀이

각 스테이지에 머물고 있는 유저의 수를 카운팅을하고 해당 카운팅 된 값 / 해당 스테이지를 지나간 유저의 총 수로 값을 구한 뒤 그 값을 배열과 리스트에 담아둔다. 

 

리스트에 담아 둔 값을 배열값과 비교하여 같은 값을 가진 배열의 인덱스를 결과 배열에 반환 하는 방식으로 접근. 


나의 답안

public static int[] solution(int N, int[] stages) {
    int[] answer = new int[N];
    double[] stage = new double[N + 1];

    for (int i : stages) {
        if (i == N + 1) continue;
        stage[i]++;
    }

    int users = stages.length;
    ArrayList<Double> failRate = new ArrayList<>();

    for (int i = 1; i < stage.length; i++) {
        if (stage[i] != 0){
            int tmp = (int) stage[i];
            stage[i] = (double) stage[i] / users;

            users -= tmp;
        }

        failRate.add(stage[i]);
    }
    Collections.sort(failRate, Collections.reverseOrder());

    for (int i = 0; i < failRate.size(); i++) {
        for (int j = 1; j < stage.length; j++) {
            if (failRate.get(i) == stage[j]) {
                answer[i] = j;
                stage[j] = -1;
                break;
            }
        }
    }

    return answer;
}

'Programmers 문제풀이 > Lv.1' 카테고리의 다른 글

명예의 전당 (1)  (0) 2023.03.22
과일 장수  (0) 2023.03.22
소수 만들기  (1) 2023.03.21
모의고사  (0) 2023.03.21
포켓몬  (0) 2023.03.20