https://school.programmers.co.kr/learn/courses/30/lessons/42889
처음엔 for문을 돌리면서 도달과 클리어 개수를 하나하나 세서 계산했다.
하지만 한 문제에서 시간 초과가 떴고, 다시 문제를 보면서 규칙을 찾아냈다.
각 스테이지에 도달한 플레이어의 수는 전 스테이지를 클리어한 플레이어 수와 같고,
어차피 위의 과정에서 도달하지 못한 플레어어의 수는 걸러지기 때문에 스테이지에 도달했지만 클리어하지 못한 플레이어의 수는 stages에서 해당 숫자(+1)의 count와 같다.
딕셔너리를 만들어 각 스테이지 별로 실패율을 저장해주고 정렬한 인덱스를 반환했다.
# 프로그래머스 42889: 실패율 (2019 KAKAO BLIND RECRUITMENT)
import numpy
def solution(N, stages):
answer = {}
arrive = [0 for i in range(N)]
stay = [0 for i in range(N)]
arrive[0] = len(stages)
stay[0] = stages.count(1)
answer[1] = stay[0] / arrive[0]
for i in range(1, N):
arrive[i] = arrive[i-1] - stay[i-1]
stay[i] = stages.count(i+1)
if arrive[i] == 0:
answer[i+1] = 0
else:
answer[i+1] = stay[i] / arrive[i]
answer = list(dict(sorted(answer.items(), key=lambda x:x[1], reverse=1)).keys())
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | Lv2] 이진 변환 반복하기 (Python) (0) | 2023.02.01 |
---|---|
[프로그래머스 | Lv2] 귤 고르기 (Python) (0) | 2023.01.31 |
[프로그래머스 | Lv1] 크레인 인형뽑기 게임 (Python) - 2019 카카오 개발자 겨울 인턴십 (0) | 2023.01.26 |
[프로그래머스 | Lv1] 키패드 누르기 (Python) - 2020 카카오 인턴십 (0) | 2023.01.14 |
[프로그래머스 | Lv1] 숫자 짝꿍 (Python) (0) | 2023.01.11 |