https://programmers.co.kr/learn/courses/30/lessons/42889
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
int[] answer = new int[N];
double[] fr = new double[N]; // 실패율 저장, 배열의 '인덱스+1' 은 스테이지
double[] ascFr = new double[N]; // 오름차순 실패율
for (int i = 0; i < answer.length; i++) {
int curStage = i+ 1; // 검사대상 스테이지
int son = 0; // 분자
int mom = 0; // 분모
for (int j = 0; j < stages.length; j++) {
if(stages[j] >= curStage) {
mom++;
if(stages[j] == curStage) {
son++;
}
}
}
if(mom == 0) mom = 1; // 분모가 0이면 안됨
double failureRate = son / (double) mom; // 실패율 계산
fr[i] = failureRate; // 실패율
ascFr[i] = failureRate; // 오름차순 실패율
}
Arrays.sort(ascFr); // 실패율 오름차순 정렬
for (int i = ascFr.length - 1; i >= 0; i--) { // '실패율 배열 - 오름차순 실패율 배열' 매핑시켜서 스테이지를 찾음
for (int j = 0; j < fr.length; j++) {
if(ascFr[i] == fr[j]) {
answer[(ascFr.length - 1) - i] = j+1; // 스테이지 기록
fr[j] = -1; // 찾은 실패율은 -1로 해서 또 안찾도록
break;
}
}
}
return answer;
}
}
'JAVA > 프로그래머스' 카테고리의 다른 글
33. LEVEL1 - 크레인 인형뽑기 게임 (0) | 2021.08.27 |
---|---|
32. LEVEL1 - 비밀지도 (0) | 2021.08.26 |
32. LEVEL1 - 키패드 누르기 (0) | 2021.08.26 |
31. LEVEL1 - 직업군 추천하기 (0) | 2021.08.26 |
30. LEVEL 1 - 숫자 문자열과 영단어 (0) | 2021.08.25 |