[프로그래머스] 실패율 (java) Sort
실패율 (프로그래머스 > Sort)
문제설명
풀이
package Sort;
import java.util.*;
public class prog_1_실패율 {
class Fail{
int stage;
double rate;
Fail(int stage, double rate){
this.stage = stage;
this.rate = rate;
}
}
public int[] solution(int N, int[] stages) {
int fail[] = new int[N+2];
double sum = stages.length;
for(int i=0; i<stages.length; i++){
fail[stages[i]]++;
}
LinkedList<Fail> faill = new LinkedList<>();
for(int i=1; i<=N; i++){
if(fail[i] !=0){
faill.add(new Fail(i, fail[i]/sum));
sum = sum-fail[i];
}
else
faill.add(new Fail(i, 0));
}
Comparator<Fail> comp = new Comparator<Fail>(){
public int compare(Fail a, Fail b){ // rate로 내림차순
if(a.rate < b.rate)
return 1;
else if(a.rate > b.rate)
return -1;
return 0;
}
};
Collections.sort(faill,comp);
int answer[] = new int[N];
for(int i=0; i<N; i++)
answer[i] = faill.get(i).stage;
return answer;
}
}
후기 (1h)
문제는 금방 이해했으나, 배열로 double을 정렬하려다가 시간을 다 보냄..
앞으로는 그냥 클래스 만들고 클래스를 정렬하는 것으로 해야겠다.. 열심히 외우자…