본문 바로가기
공부/Algorithms w.Java

프로그래머스-실패율; Java

by thegreatjy 2022. 2. 8.
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