슬기로운 코테 생활
[프로그래머스] 실패율
vhrehfdl
2020. 12. 24. 13:38
* 문제
programmers.co.kr/learn/courses/30/lessons/42889
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr
* 문제 풀이
- 첫째, stages의 개수를 구한다.
- 둘재, user_nu의 개수를 차례 차례 줄여주면 각 스테이지의 실패율을 구한다.
- 셋째, 실패율을 사전 형식으로 저장한 후 value 값을 기준으로 높은 순서대로 출력한다.
* 생각
- 큰 줄기의 흐름은 전부 맞았지만 하나의 예외처리를 하지 못해 틀렸다.
사용자 수가 0일 경우에 분모가 0이 되는데 이럴경우 zero division 문제가 발생한다.
이 예외처리가 제대로 출력되지 않아 시간을 많이 잡아먹었다.
* 코드
import collections
def solution(N, stages):
cnt_dic = collections.Counter(stages)
user_num = len(stages)
fail_dic = {}
for i in range(1, N+1):
if user_num != 0:
fail_val = (cnt_dic[i] / user_num)
fail_dic[i] = fail_val
else:
fail_dic[i] = 0
user_num -= cnt_dic[i]
return sorted(fail_dic, key = lambda k: fail_dic[k], reverse=True)