프로그래머스 풀이

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

ag2개발자 2022. 2. 12. 19:48

이중 for문을 이용해서 현재 스테이지별 유저의 스테이지를 탐색해줬다.

정렬은 값이 0~1이니 -1로 바꿔가면서 최대값을 찾았다.

처음엔 스테이지에 도달했지만 클리어하지 못한 유저들과 스테이지에 도달한 유저들 모두 이중 for문 안에서

구하니 시간초과가 3개 나왔다... 그래서 len(stages)를 이용, 실패한 유저씩 빼주면 되더라.

def solution(N, stages):
    a= []
    b=[]
    k= len(stages)
    
    for i in range(N):
        c=0     #실패한 유저수 스테이지마다 초기화
        for j in range(len(stages)):        #계속 변하는 k로 두지않게 주의
            if stages[j]==i+1:      #스테이지에 도달했지만 클리어하지 못한 유저들
                c+=1
        if c!=0:
            a.append(c/k)       #도달한 유저수로 나눠줌
        else:       #실패한 유저가 없을때
            a.append(0)
        k-=c    #스테이지에서 떨어진 유저들을 제외시킴
            
    for i in range(len(a)):
        b.append(a.index(max(a))+1)
        a[a.index(max(a))]=-1       #내림차순으로 정렬
    return b