슬기로운 연구생활

[프로그래머스] 실패율 본문

슬기로운 코테 생활

[프로그래머스] 실패율

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)

 

Comments