코딩테스트

[프로그래머스/LEVEL 1/파이썬] 실패율

Sun0727 2022. 6. 27. 13:36

#문제링크

https://programmers.co.kr/learn/courses/30/lessons/42889

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr

#나의풀이

def solution(N, stages):
    stage_fail = {}
    user = len(stages)
        
    for i in range(1, N+1):
        if user != 0:
            stage_fail[i] = stages.count(i) / user
            user = user - stages.count(i) 
        else:
            stage_fail[i] = 0

    return sorted(stage_fail,key = lambda x: stage_fail[x], reverse=True)

#해설

각 스테이지의 실패율로 정렬해서 스테이지를 출력해야 했다. 배열로 하면 여러가지 고려할 사항이 많으므로 좀 더 편한 딕셔너리를 사용하기로 했다.

stages에는 현재 유저가 어디에 막혀있는지 나온다 즉 유저의 숫자는 stages의 개수라고 할 수 있다.

 

반복문을 돌린다 0 단계는 없으므로 1부터 N+1까지 돌려 1~N 까지를 확인할것이다.

현재 남은 유저가 존재하는지 안하는지 확인한다. 이 부분을 체크해주지 않으면 런타임에러를 배출한다.

만약 유저가 0이 아닐경우 i번째 단계 스테이지 실패율은 스테이지에 숫자 i가 몇개인지 체크하고 남은 유저로 나눠주었다 이후 유저는 그 스테이지 인원만큼 빼주었다.

 

여기까지 다 돌았다면 각 스테이지 실패율이 나온다 딕셔너리 정렬은 sorted이고 key값을 배출하기 위해 lamda를 써주고 내림차순으로 해주었다