-
프로그래머스 실패율 (파이썬)Coding Test/Algorithm 2021. 3. 17. 23:29
programmers.co.kr/learn/courses/30/lessons/42889
문제설명은 링크로 대체한다.
이 문제의 포인트는 높은 숫자의 의미에 있다.
만약 입력 리스트에 6이 있다면 1~5단계를 이미 지나갔다는 뜻이다.
예를들어 3단계의 실패 확률을 계산한다면 4단계 이후의 규모도 알아야 실패율을 구할 수 있다는 뜻이다.
그 점을 유의하며 코드를 작성하면 된다.
def solution(N, stages): answer = [] dic = {} cnt = len(stages) l = cnt for i in range(1, N+1): fail = stages.count(i) if (cnt == 0): dic[i] = 0 else: dic[i] = fail/cnt cnt -= fail new_dic = sorted(dic.items(), reverse=True, key=lambda item: item[1]) for key, value in new_dic: answer.append(key) return answer
그래서 필자도 stages.count(i)에서 1부터 시작했다.
그 이유는 이제 1라운드를 실패한 사람을 제외한 나머지 배열의 수는 모두가 1라운드를 통과했기 때문에 계산이 편해진다.
같은 이유로 그 후 1라운드에 머무는 사람을 제외하고 2라운드를 계산하면 모두가 2라운드를 통과한 사람이기에 2라운드에 머무는 사람(fail) /총 인원수(cnt, 1라운드 제외)로 계산하면 된다.
그 후 정렬을 하면 완성
'Coding Test > Algorithm' 카테고리의 다른 글
[백준] 등수 구하기 (1205번) 파이썬 (0) 2021.03.19 백준 Q-인덱스 (13333번) 파이썬 (0) 2021.03.18 백준 18406 럭키 스트레이트 파이썬 풀이 (0) 2020.12.01 프로그래머스 체육복 문제 파이썬 풀이 (0) 2020.11.30 [코드업 기초 100제 1099번] 성실한 개미 (0) 2019.08.22