본문 바로가기
Algorithm/프로그래머스

[프로그래머스] - 실패율 (파이썬)

by 2HS 2022. 2. 15.
# 실패율
def solution(N, stages):
    answer = [[i, 0] for i in range(N+2)]
    arrive = [0] * (N+2)
    for x in stages:
        arrive[x-1] += 1
    for i in range(len(arrive)-1, 0, -1):
        arrive[i-1] += arrive[i]
    for i in range(1, len(arrive)):
        if arrive[i-1] != 0:
            answer[i][1] = (arrive[i-1] - arrive[i]) / arrive[i-1]
    answer.sort(key=lambda x: -x[1])
    result = []
    for i, x in answer:
        if i != 0 and i != len(answer)-1:
            result.append(i)
    return result

 

2019 카카오 블라인드 - 2번

answer : [인덱스 값, 정답(초기값=0)] 인 리스트를 전체 스테이지 전후로 하나의 스테이지를 추가한 길이만큼 저장

arrive : 전체 스테이지 전후로 하나의 스테이지를 추가해서 도달한 유저 수를 저장

1. arrive에 해당 스테이지에 도달한 유저수를 업데이트

2. answer[i][1]에 실패율을 계산한 값을 업데이트

3. answer를 실패율이 낮은 순서로 정렬

4. 전체 스테이지 전후의 값을 제외한 전체 스테이지의 인덱스 값을 순서대로 출력