-
[Programmers] 실패율programing/Algorithm 2021. 3. 28. 21:34
실패율
2019 KAKAO BLIND RECRUITMENT
level 1
python3
from itertools import groupby def solution(N, stages): failRatioList = [(i+1, 0) for i in range(N)] users = len(stages) fail = 0 stages.sort() for (stage, group) in groupby(stages): if stage > N: break listGroup = list(group) failUserNum = len(listGroup) print(stage, listGroup, len(listGroup)) failRatioList[stage - 1] = (stage, failUserNum / users) users -= failUserNum failRatioList.sort(key=lambda x: x[1], reverse=True) return list(map(lambda x: x[0], failRatioList))
우선, `failRatioList`을 각 스테이지 넘버와 함께 초기화해준다. 왜냐하면 인풋에 비어있는 스테이지 넘버가 있을 수 있기 때문이다.
그리고 총 유저 수를 구한다.
`groupby` 를 사용하기 위해, 각 스테이지를 오름차순으로 정렬한다.
그 다음 `grouby`를 사용해 각 스테이지 별 도전중인 유저 수를 그루핑한다.
그루핑된 이터레이터를 순회하면서, 실패율을 구해서 `failRatioList` 에 덮어씌운다.
`failRatioList` 가 완성되면 실패율을 기준으로 정렬후, 실패율만 따로 매핑해서 반환하면 끝.
뭔가 성능 이슈가 있을 것 같은데, 한방에 통과했다.
'programing > Algorithm' 카테고리의 다른 글
[Programmers] [1차] 다트 게임 (0) 2021.04.11 [Programmers] 비밀지도 (0) 2021.04.04 [Programmers] 예산 (0) 2021.03.28 [Programmers] 소수 만들기 (0) 2021.03.27 [Programmers] x만큼 간격이 있는 n개의 숫자 (0) 2021.03.27 댓글