원본 문제 : 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;
}
}
'프로그래머스 > 코딩연습2' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭(42583)(java) (0) | 2019.05.29 |
---|---|
[프로그래머스] 프린터 (0) | 2019.05.29 |
댓글