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

[Level 1] [python] 실패율

by B_Tori 2022. 1. 3.

문제

파이썬 문제 풀이

def solution(N, stages):
    dic = {}
    answer = []
    user = len(stages) 
    for i in range(1, N+1) :
        if user != 0 :
            # 남아있는 유저가 있다면
            count = stages.count(i)
            dic[i] = count/user
            user -= count
        else :
            dic[i] = 0
    
    for key, _ in sorted(dic.items(), key=lambda x:(-x[1], x[0])):
        answer.append(key)
    return answer

실패율을 가지고 내림차순으로 스테이지 번호를 출력해야 하기 때문에 각 스테이지 번호에 대한 실패율을 저장해야 했다. 

스테이지 번호와 실패율을 쌍으로 기록해야하기 때문에 딕셔너리 자료형을 선택했다.

딕셔너리를 사용해 스테이지를 키로, 그에 대한 실패율을 값으로 저장을 한다.

 

이제 실패율을 구하기 위해서 분모에 해당하는 스테이지에 도달한 플레이어 수를 user로 칭하였다.

user에는 처음에 len(stage)값이 들어가는데 이는 stage변수가 게임을 이용하는 사용자가 멈춰있는 스테이지 번호를 담고 있는 배열이기 때문에 사용자 정보를 뜻하므로 len(stage)는 전체 사용자를 의미한다.

스테이지 1단계는 전체 사용자가 모두 도달했기 때문에 우선 전체 사용자 값을 사용한다.

2단계로 가면 1단계에 멈춰있는 유저수를 user값에서 빼주고, 3단계로 가면 1단계 유저수가 이미 빠져있는 user변수에서 2단계에 멈춰있는 유저수를 빼 주면 된다.

해당 스테이지에 멈춰있는 유저수는 실패율의 분자 값으로 count함수를 통해 구할 수 있었다.

count()

찾고자 하는 항목이 리스트에 몇 개 들어있는지 확인하는 함수

list.count(찾을 항목) 형태로 사용한다.

 

댓글