코딩테스트
[프로그래머스/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를 써주고 내림차순으로 해주었다