프로그래머스 실패율
풀이
- 개인적으로 지금까지 푼 프로그래머스 문제 중 제일 오래 걸렸다
- 예외 잡느라 -_-… 정렬은 많이 약하구나 느꼈고 정렬도 많이 연습해야 겠다
- 소요 시간 약 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;
}
}