본문 바로가기
프로그래머스/코딩연습2

[프로그래머스] 실패율 (42889)(java)

by 유줘니 2019. 5. 28.

원본 문제 : https://programmers.co.kr/learn/courses/30/lessons/42889

 

이전에 풀었던 방법 : https://youjourney.tistory.com/4

 

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

class Stage implements Comparable<Stage> {
	int stage;
	Double failureRate;
	
	Stage(int stage, double failureRate){
		this.stage = stage;
		this.failureRate = failureRate;
	}

	@Override
	public int compareTo(Stage o) {
		if(this.failureRate > o.failureRate)
			return -1;
		else if(this.failureRate < o.failureRate)
			return 1;
		else return 0;
	}	
}

class Solution {
    		public int[] solution(int N, int[] stages) {

        int total_user = stages.length;
		int[] answer = new int[N];
		HashMap<Integer, Integer> map = new HashMap();
		
		for(int i : stages) {
			if(!map.containsKey(i))
				map.put(i, 1);
			else
				map.put(i, map.get(i)+1);
		}
		
		List<Stage> list = new ArrayList();
		for(int i = 1; i <= N ; i++) {
			if(map.containsKey(i)) {
				list.add(new Stage(i,(double)map.get(i)/total_user));
				total_user -= map.get(i);
			}
			else
				list.add(new Stage(i, 0.0));
		}

		
		Collections.sort(list);
		
		for(int i = 0 ; i < N; i++)
			answer[i] = list.get(i).stage;
		
		return answer;
	}
}

댓글