import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
public class failRate {
public static void main(String[] args) {
int[] stages = {4,4,4,4,4};
int N = 5;
int[] answer = solution(N, stages);
System.out.print("{");
for (int i = 0; i < answer.length; i++) {
System.out.print(answer[i]);
if(i!=answer.length-1) {
System.out.print(",");
}
}
System.out.println("}");
}
private static int[] solution(int n, int[] stages) {
int[] answer = new int[n];
double[] rate = new double[n];
double[] fail = new double[n];
for (int i = 0; i < fail.length; i++) {
for (int j = 0; j < stages.length; j++) {
if(stages[j]==i+1) {
fail[i]++;
}
}
}
int sum = 0;
for (int i = 0; i < fail.length; i++) {
if(i==0) rate[i]=fail[i]/(stages.length);
else {
sum += fail[i-1];
if(stages.length-sum!=0) rate[i]=fail[i]/(stages.length-sum);
else rate[i]=0.0;
}
}
System.out.println("도전자 : "+stages.length);
System.out.print("{");
for (int i = 0; i < rate.length; i++) {
System.out.print(rate[i]);
if(i!=rate.length-1) {
System.out.print(",");
}
}
System.out.println("}");
LinkedHashMap<Integer, Double> map = new LinkedHashMap<Integer, Double>();
for (int i = 0; i < rate.length; i++) {
map.put((i+1),rate[i]);
}
// System.out.println(map);
List<Integer> list = new ArrayList<>(map.keySet());
Collections.sort(list, (value1, value2) -> (map.get(value2).compareTo(map.get(value1))));
int count = 0;
for(Integer i : list) {
// System.out.println(i);
answer[count]=i;
count++;
}
return answer;
}
}
분모가 0 이 되는 경우를 유의해야겠다.
또한 내림차순, 오름차순을 좀 더 다양하게 활용하는 법을 공부해야겠다.
'코딩테스트 연습' 카테고리의 다른 글
로그인후 결제를 간단하게 로그화해보는 알고리즘 (0) | 2021.08.22 |
---|---|
채점하기.. 본인이 채점한 점수가 최고값,최소값일 경우는 제외하고 (0) | 2021.08.20 |
폰켓몬을 받을때 최대 몇 종류를 가져갈 수 있을까? (0) | 2021.08.20 |
체육복 서로 빌려줘 수업받을 수 있는 인원 확인하는 코드 (0) | 2021.08.20 |
일정한 형식의 답안을 제출하는 학생들중 최대 정답자명단 뽑기 (0) | 2021.08.20 |