나의 답 :
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인지 아닌지 판별하는 비교를 사용하는 것이 더 좋을 것 같다.
'공부 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 프린터(스택/큐) (0) | 2021.01.15 |
---|---|
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT 다트 게임(파이썬) (0) | 2021.01.14 |
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT 비밀지도 (0) | 2021.01.11 |
[프로그래머스] 예산, 직사각형 별찍기 (0) | 2021.01.11 |
[프로그래머스] 행렬의 덧셈, x만큼 간격이 있는 n개의 숫자 (0) | 2021.01.10 |