https://school.programmers.co.kr/learn/courses/30/lessons/42889

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 풀이

from collections import Counter
def solution(N, stages):
    answer = []
    rates = {x : 0 for x in range(1,N+2)}
    rates.update(dict(Counter(stages)))
    
    total = len(stages)
    
    for k in range(1,N+2):
        v = rates[k]
        if v != 0:
            rates[k] = v/total
        total -= v
    
    rates = sorted(rates.items(), key = lambda x : x[1], reverse=True)
    
    for k, v in rates:
        if k != N+1:
            answer.append(k)
    
    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)
  • Counter 대신에 count를 사용해서 1부터 N까지의 갯수만 구함 : 나와 달리 N+1은 무시
  • sorted 할 때 인자값으로 result dict 자체를 넣으면 key만 담긴 정렬된 배열 return : 나는 rates.items()를 이용했더니 반환값이 (k, v) set으로 이뤄진 배열이었음

 

 

+ Recent posts