Development

[프로그래머스] 실패율 본문

코딩테스트/Python

[프로그래머스] 실패율

yo~og 2021. 8. 11. 23:20
반응형

움.,,, 블로그 며칠만에 쓰는거지.. 코테 넘 오랜만에 하는거같아서 집중력 제로임.. 휴 .. 

 

내 코드

def solution(N, stages):
    answer = []
    
    for i in range(1,N+1):
        cnt1=0
        cnt2=0
        for j in stages:
            if j==i:
                cnt1+=1
            if j>=i:
                cnt2+=1
        if cnt1==0:
            answer.append([0,i])
        else:
            answer.append([cnt1/cnt2,i])
    
    answer = sorted(answer,key=lambda x:(-x[0],x[1]))
    
    return [i[1] for i in answer]

음 그냥 무식하게 풀었다..! 같은 숫자를 세고 큰 숫자를 센 다음 두개를 나눈다.

이때 앞 숫자가 0이면 answer에 [0,i]를 넣어준다. 아니면 나눈 숫자를 넣어준다.

i를 넣어준 이유는 sort해도 스테이지 번호를 쉽게 찾을려고 넣었다. 

그리고 sort를 해준다. 여기서,., 까먹어서 사실 인터넷봄^^.. 저거 예전에 정리했었는데.. key 사용하는 방법 완전 까먹.. 담에 정리 하던지 해야겠다.. 휴 안까먹기 위해서 여기에 3번 써야지^^..

 

sorted(answer,key=lambda x:(-x[0],x[1]))

sorted(answer,key=lambda x:(-x[0],x[1]))

sorted(answer,key=lambda x:(-x[0],x[1]))

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋ;; 참고로 -를 넣으면 내림차순이 된다!

 

다른사람 풀이

def solution(N, stages):
    result = {}
    denominator = len(stages)
    for stage in range(1, N+1):
        if denominator != 0:
            count = stages.count(stage)
            result[stage] = count / denominator
            denominator -= count
        else:
            result[stage] = 0
    return sorted(result, key=lambda x : result[x], reverse=True)

같은건 cnt로 세지말고 count써서 해도되구나,, 생각이 왜 안날까ㅜㅜ 힝 ㅠ 

ㅠㅠ 어렵다..

stages의 길이를 구한다음 stages에서 원소 하나하나 씩 빼면서 중복되는 수만큼 (count) 빼준다. (demonimator)

demonimator이 0이 아닐 때는 위 과정과 result에 추가하는 것을 반복하고 0이면 result에 0을 넣는다. N만큼 반복하기 때문에 stages에 없는 숫자도 result에 0으로 들어간다.

딕셔너리의 value값을 기준으로 내림차순으로 정렬하고 sorted안에 result만 넘겨줬으니 key들만 들어가서 key값만 반환한다.

 

으아ㅏㅏ 어렵다!!!! 더 열심히 해야겠다..,, 다담주부터 다시 화이팅.. 이번주랑 다음주는 바빠..

 

 

반응형
Comments