문제
문제 풀이
각 스테이지에 머물고 있는 유저의 수를 카운팅을하고 해당 카운팅 된 값 / 해당 스테이지를 지나간 유저의 총 수로 값을 구한 뒤 그 값을 배열과 리스트에 담아둔다.
리스트에 담아 둔 값을 배열값과 비교하여 같은 값을 가진 배열의 인덱스를 결과 배열에 반환 하는 방식으로 접근.
나의 답안
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 |