1+ # 38. 실패율
2+
3+ # 내 풀이 X ... 뭔가 어렵네...
4+ def solution (N , stages ):
5+ answer = []
6+
7+ # 스테이지 도달한 플레이어 수 ... k
8+ success_players = len (stages )
9+
10+ # 실패율 리스트
11+ failing_rate_lst = []
12+
13+ for i in range (1 , N + 1 ):
14+ # 스테이지 도달했으나 클리어하지 못한 플레이어 수
15+ failing_cnt = 0
16+ for j in range (len (stages )):
17+ if stages [j ] == i :
18+ failing_cnt += 1
19+
20+ if failing_cnt == 0 :
21+ failing_rate_lst .append (0 )
22+ else :
23+ failing_rate_lst .append (failing_cnt / success_players )
24+ success_players = success_players - failing_cnt
25+
26+ failing_rate_reverse_sort = sorted (failing_rate_lst , reverse = True )
27+ # print(failing_rate_reverse_sort)
28+
29+ for i in range (len (failing_rate_reverse_sort )):
30+ answer .append (failing_rate_lst .index (failing_rate_reverse_sort [i ]) + 1 )
31+ failing_rate_lst [failing_rate_lst .index (failing_rate_reverse_sort [i ])] = 2
32+
33+ return answer
34+
35+ N_1 = 5
36+ N_2 = 4
37+
38+ stages_1 = [2 , 1 , 2 , 6 , 2 , 4 , 3 , 3 ]
39+ stages_2 = [4 , 4 , 4 , 4 , 4 ]
40+
41+ # print(solution(N_1, stages_1))
42+ # print(solution(N_2, stages_2))
43+
44+ # 이중 리스트 풀이 ... [2, 1, 2, 6, 2, 4, 3, 3] -> [[1], [2, 2, 2], [3, 3], [4], [6]]
45+ def solution_mine (N , stages ):
46+ answer = []
47+
48+
49+ return answer
50+
51+ # print(solution_mine(N_1, stages_1))
52+ # print(solution_mine(N_2, stages_2))
53+
54+ def solution_best (N , stages ):
55+ answer = []
56+
57+ # 실패율 딕셔너리
58+ result = {}
59+
60+ # 스테이지에 도달한 플레이어 수 = success_players / denominator : 분모
61+ denominator = len (stages )
62+
63+ for stage in range (1 , N + 1 ):
64+ if denominator != 0 :
65+ failing_count = stages .count (stage )
66+ result [stage ] = failing_count / denominator
67+ denominator -= failing_count
68+ else :
69+ result [stage ] = 0
70+ answer = sorted (result , key = lambda x : result [x ], reverse = True )
71+ return answer
72+
73+ print (solution_best (N_1 , stages_1 ))
74+ print (solution_best (N_2 , stages_2 ))
0 commit comments