nums는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를 k 개수만큼 return 해주세요.
nums = [1,1,1,2,2,3],
k = 2
return [1,2]
nums = [1]
k = 1
return [1]
from collections import Counter
from operator import itemgetter
def top_k(nums, k):
# 여기에 코드를 입력해주세요
return list(sorted(Counter(nums).items(), key=itemgetter(1), reverse=True)[i][0] for i in range(k))
먼저 Counter
로 nums안에 어떤 숫자가 몇번 들어갔는지 구해준다. { key(숫자) : value(개수)}
그 다음 정렬을 해 주어야 하는데 많이 들어간 숫자 기준으로 정렬하기 위해 itemgetter
를 사용해 value값으로 정렬하고 내림차순으로 정렬한다.
그리고 많이 들어간 숫자를 k
만큼 리턴해야 하므로 반복문을 사용해 리스트에 키값만 담아 리턴한다
nums = [1,2,2,2,2,3,3]
1번 수행
{1:1, 2:4, 3:2}
2번 수행
[(2,4), (3,2), (1,1)]
3번 수행
[2,3]