728x90
import java.util.*;
class Solution {
class rate{
int level;
double rate;
rate(int level, double rate){
this.level=level;
this.rate=rate;
}
}
public int[] solution(int N, int[] stages) {
int[] num=new int[N+1];
//실패 개수를 구함
for(int i=0;i<stages.length;i++) {
if(stages[i]==N+1) continue;
num[stages[i]]++;
}
ArrayList<rate> list=new ArrayList<>();
int denom=stages.length;
double rt;
//실패율 계산하여 list에 넣음
for(int i=1;i<num.length;i++) {
if(denom==0) {//분모가 0이면
list.add(new rate(i, 0));
continue;
}
rt=(double)num[i]/denom;
list.add(new rate(i, rt));
denom=denom-num[i];
}
//실패율에 따라 정렬
Collections.sort(list, ((o1, o2) -> Double.compare(o2.rate, o1.rate)));
//실패율의 레벨 인덱스를 answer배열에 저장
int[] answer = new int[N];
for(int i=0;i<list.size();i++) {
answer[i]=list.get(i).level;
}
return answer;
}
}
구글링~
실패율 계산하는 것 까지는 생각했는데 실패율의 스테이지 레벨 인덱스를 어떻게 정렬할지 고민하다가 구글링을 했다.
Collections.sort()를 머리에 넣자...
728x90
'공부 > Algorithms w.Java' 카테고리의 다른 글
프로그래머스-소수찾기; Java (0) | 2022.02.17 |
---|---|
프로그래머스-숫자 문자열과 영단어; Java (0) | 2022.02.08 |
백준 1149-RGB 거리; Java (0) | 2022.02.05 |
백준 14502-연구소; Java (0) | 2022.02.01 |
백준 14888-연산자 끼워넣기; Java (0) | 2022.02.01 |