


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 스테이지의 실패율을 나타내야 함.