Home 프로그래머스 실패율
Post
Cancel

프로그래머스 실패율

프로그래머스 실패율

풀이

  • 개인적으로 지금까지 푼 프로그래머스 문제 중 제일 오래 걸렸다
  • 예외 잡느라 -_-… 정렬은 많이 약하구나 느꼈고 정렬도 많이 연습해야 겠다
  • 소요 시간 약 1시간 30분
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

class Solution {
    public static int[] solution(int N, int[] stages) {
        int[] answer = new int[N];

        Arrays.sort(stages);

        Map<Integer, Double> stageRatio = new HashMap<>();


        for(int i=1; i<=N; i++){
            int curStageNum = 0;
            int noClear = 0;

            if(i > stages[stages.length-1] )
                stageRatio.put(i, 0.0);
             else{
                for (int j = 0; j < stages.length; j++) {
                    if (stages[j] >= i) curStageNum++;

                    if (stages[j] == i && stages[j] >= i) noClear++;
                }
                stageRatio.put(i, (double) noClear / (double) curStageNum);
            }
        }

        List<Integer> keySetList = new ArrayList<>(stageRatio.keySet());
        Collections.sort(keySetList, (o1, o2) -> (stageRatio.get(o2).compareTo(stageRatio.get(o1))));

        int cnt  = 0;
        for(var a: keySetList)
            answer[cnt++] = a;


        return answer;
    }
}
This post is licensed under CC BY 4.0 by the author.