실패율

이준경·2021년 5월 7일
0

<나의 풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.util.*;
 
class Solution {
    public int[] solution(int N, int[] stages) {
        int[] answer = new int[N];
        
        int usersu=stages.length;
        HashMap<Integer,Integer> map = new HashMap<>();
        HashMap<Integer,Double> failmap = new HashMap<>();        
        List<Double> faillist = new ArrayList<>();
        List<Integer> list = new ArrayList<>();
        double[] ff;
        
        for(int i=1; i<=N+1; i++)
            map.put(i,0);
        
        for(int num : stages){
            map.put(num,map.get(num)+1);
        }
        
        for(int i=1; i<=N+1; i++){
            double failper=1;
            if(usersu>0)
                failper = (usersu-map.get(i))/(double)usersu;
            failmap.put(i,failper);
            if(!faillist.contains(failper))
                faillist.add(failper);
            usersu-=map.get(i);
        }
        
        
        ff= new double[faillist.size()];
        for(int i=0; i<faillist.size(); i++){
            ff[i] = faillist.get(i);
        }
        Arrays.sort(ff);
        
       
        
        for(int i=0; i<faillist.size(); i++){
            for(int j=1; j<N+1; j++){
                int k=0;
                if(failmap.get(j)==ff[i]){
                    list.add(j);
                }
                    
            }
        }
        for(int i=0; i<list.size(); i++){
            answer[i]=list.get(i);
        }
        
        return answer;
    }
}
 
cs
  1. hashmap의 키 값에 1부터 라운드 수 n+1 만큼 반복 대입
  2. 현재 스테이지에 머무른 사람 수 만큼 그 라운드의 벨류값 증가
  3. 현재 라운드의 성공률 failper을 구함.
  4. 라운드를 키값, 성공률을 벨류값으로 hashmap에 대입
  5. 성공률을 리스트에 대입.
  6. faillist를 다시 배열에 대입하고 정렬
  7. 정렬된 배열의 요소 값과 같은 failmap의 키를 list에 대입
  8. list요소 answer에 대입 후 반환

0개의 댓글

관련 채용 정보