programmers.co.kr/learn/courses/30/lessons/42889
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
private static class FailureInform {
private final int stageNumber;
private double failureRate;
public FailureInform(int stageNumber, int numberOfChallengingUsers,
int numberOfClearedUsers) {
this.stageNumber = stageNumber;
this.setFailureRate(numberOfChallengingUsers, numberOfClearedUsers);
}
private void setFailureRate(int numberOfChallengingUsers, int numberOfClearedUsers) {
if (numberOfChallengingUsers + numberOfClearedUsers == 0){
failureRate = 0.0;
}else{
this.failureRate =
(double) numberOfChallengingUsers / (double) (numberOfChallengingUsers + numberOfClearedUsers);
}
}
}
public int[] solution(int N, int[] stages) {
int[] answer = new int[N];
int[] clearedUsersForEachStage = new int[N];
int[] challengingUsersForEachStage = new int[N];
for (int challengingStageNumber : stages) {
for (int clearedStageIndex = 0; clearedStageIndex < challengingStageNumber - 1; clearedStageIndex++) {
clearedUsersForEachStage[clearedStageIndex] += 1;
}
if (challengingStageNumber < N + 1) {
challengingUsersForEachStage[challengingStageNumber - 1] += 1;
}
}
ArrayList<FailureInform> failureInforms = new ArrayList<>();
for (int stageIndex = 0; stageIndex < N; stageIndex++) {
failureInforms.add(new FailureInform(
stageIndex + 1,
challengingUsersForEachStage[stageIndex],
clearedUsersForEachStage[stageIndex]
));
}
failureInforms.sort((beforeFailureInform, afterFailureInform) -> {
if (beforeFailureInform.failureRate == afterFailureInform.failureRate) {
return Integer
.compare(beforeFailureInform.stageNumber, afterFailureInform.stageNumber);
} else {
return -1 * Double.compare(beforeFailureInform.failureRate,
afterFailureInform.failureRate);
}
});
for (int answerIndex = 0; answerIndex < N; answerIndex++){
answer[answerIndex] = failureInforms.get(answerIndex).stageNumber;
}
return answer;
}
}
'Problem-solving > 프로그래머스' 카테고리의 다른 글
프로그래머스 - (2020 KAKAO BLIND RECRUITMENT) 문자열 압축 (Java) (0) | 2020.11.23 |
---|---|
프로그래머스 - (2018 KAKAO BLIND RECRUITMENT) [1차]다트 게임 (Java) (0) | 2020.11.22 |
프로그래머스 - (2018 KAKAO BLIND RECRUITMENT) [1차]비밀지도 (Java) (0) | 2020.11.21 |
프로그래머스 - (2020 카카오 인턴십) 키패드 누르기 (Java) (0) | 2020.11.21 |
프로그래머스 - (2019 카카오 개발자 겨울 인턴십) 크레인 인형뽑기 게임 (Java) (0) | 2020.11.21 |
댓글