


package level1;
import java.util.Arrays;
public class 실패율 {
public static int [] solution(int N, int [] stages){
int [] answer = new int[N];
Arrays.sort(stages);
int tmp = 0;
float [] rate = new float[N];
for (int i=1;i<=N;i++){
int count = 0;
for (int j=tmp;j<stages.length;j++) {
if (i == stages[j]) count++;
else break;
}
rate[i-1] = (float)count/(float)(stages.length-tmp);
if(stages.length<=tmp) rate[i-1] = 0;
tmp += count;
}
float [] arr = new float[N];
int size = 0;
for (float i : rate) arr[size++] = i;
Arrays.sort(arr);
for (int i= arr.length-1;i>=0;i--){
for (int j=0;j<rate.length;j++){
if(arr[i] == rate[j]) {
answer[arr.length-1-i] = j+1;
rate[j] = -1;
break;
}
}
}
return answer;
}
public static void main(String[] args) {
int [] s1= {1,2,2,1,3};
for (int k : solution(5,s1))
System.out.print(k+" ");
System.out.println();
int [] s2= {1,2,3,4,5};
for (int k : solution(6,s2))
System.out.print(k+" ");
System.out.println();
int [] s3= {2,1,2,6,2,4,3,3};
for (int k : solution(5,s3))
System.out.print(k+" ");
System.out.println();
int [] s4= {4,4,4,4,4};
for (int k : solution(4,s4))
System.out.print(k+" ");
}
}
- 나눌때 데이터 타입 주의.
- 주어진 스테이지 개수 N보다 낮은 stages만을 갖고 있을 때도 1~N 스테이지의 실패율을 나타내야 함.