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으로 이뤄진 배열이었음
'◦ Algorithm > Python' 카테고리의 다른 글
백준 퇴사 14501 DP (0) | 2023.05.14 |
---|---|
백준 로봇 조종하기 2169 DP (0) | 2023.05.09 |
백준 옥상 정원 꾸미기 6198 스택 (1) | 2023.04.25 |
백준 탑 2493 스택 (0) | 2023.04.25 |
프로그래머스 의상 딕셔너리/해시/맵/카운터 (0) | 2023.04.22 |