반응형
programmers.co.kr/learn/courses/30/lessons/42889
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr
from collections import defaultdict
def solution(N, stages):
stageinfos = defaultdict(lambda: [0, 0])
for user in stages: # 유저들의 현재 stage를 보고 모든 스테이지의 도달과 실패를 조정함.
for i in range(1, user + 1):
stageinfos[i][0] += 1
stageinfos[i][1] += 1
if N + 1 in stageinfos: # N + 1은 모든 스테이지를 통과한 표시이므로 제거
del stageinfos[N + 1]
zerofails = [i for i in range(1, N + 1) if i not in stageinfos.keys()] # 도달한 사람이 없는 stages
# 실패율로 내림차순 정렬 + zerofails
return [stageinfo[0] for stageinfo in sorted(stageinfos.items(), key=lambda x: x[1][1] /x[1][0], reverse=True)] + zerofails
def solution(N, stages):
stageinfos = dict()
zerofails = [stage for stage in range(1, N + 1) if stage not in set(stages)] # 실패율 0인 stages
for stage in set(stages): # 실패율이 존재하는 stage만 실패율 계산
stageinfos[stage] = stages.count(stage) / len([i for i in stages if i >= stage])
if stageinfos.get(N + 1) is not None: # N + 1 stage는 제거
del stageinfos[N + 1]
return sorted(stageinfos, key=stageinfos.get, reverse=True) + zerofails
→ key=stageinfos.get 는 key=lambda x: stageinfos[x] 와 같음.
반응형
'IT study > 알고리즘 문제 풀이' 카테고리의 다른 글
길 찾기 게임 (0) | 2021.02.21 |
---|---|
후보키 (0) | 2021.02.19 |
오픈채팅방 (0) | 2021.02.19 |
백준 2839 : 설탕 배달 (0) | 2021.02.18 |
백준 1931 : 회의실 배정 (0) | 2021.02.18 |