프로그래머스 실패율

업데이트:

실패율

카카오 문제는 항상 느끼는건데 문제 설명이 어렵다
한 여섯번 읽은 듯..
배열을 통해 각 스테이지를 클리어 하지 못한 이용자를 입력 후 총 인원수를 빼주면서 실패율을 계산 함

import java.util.*;

class Solution {
		
		static class Failure implements Comparable<Failure>{
			int num;
			double failureRate;
			
			Failure(int num, double failureRate) {
				this.num = num;
				this.failureRate = failureRate;
			}

			@Override
			public int compareTo(Failure others) {
				
				return Double.compare(this.failureRate, others.failureRate);
			}
		}
		
		public static int[] solution(int N, int[] stages) {
			int[] answer = new int[N];
			
			int[] checkStages = new int[N+1];
			int total = 0;
			
			for(int i = 0; i < stages.length; i++) {
				if(N < stages[i]) {
					total ++;
					continue;
				}
				checkStages[stages[i]] +=1;
				total ++;
			}
			
			List<Failure> list = new ArrayList<>();
			
			
			for(int i = 1; i <= N; i++) {
				total -= checkStages[i-1]; 
                double f= 0;
                if(checkStages[i] != 0) {
                   f =(double)checkStages[i] / total; 
                }
				
				list.add(new Failure(i, f ));
			}
			
			Collections.sort(list, Collections.reverseOrder());
			
			for(int i = 0; i < list.size(); i++) {
				answer[i] = list.get(i).num;
			}
			
			return answer;
		}
	}

댓글남기기