공부/코딩테스트

[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 실패율

ghhong 2021. 1. 12. 13:22

나의 답 :

import operator

def solution(N, stages):
    answer = []
    result={}
    stages.sort()
    for i in range(1,N+1):
        if i in stages:
            result[i] = stages.count(i)/len(stages)
            while i in stages:
                stages.remove(i)
        else:
            result[i] = 0
    result = sorted(result.items() ,reverse=True, key=operator.itemgetter(1))
    print(result)
    for i in result:
        answer.append(i[0])
    return answer

 

다른 사람의 답 :

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)

다른 사람의 답에서 count함수의 효율을 위해 stages에서 값들을 삭제하는 나의 답이 좋은 부분이다.

나의 답에서 if i in stages보다 stages의 길이가 0인지 아닌지 판별하는 비교를 사용하는 것이 더 좋을 것 같다.