Q. nums는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를 k 개수만큼 return 해주세요.
def top_k(nums, k):
dict={}
for num in nums:
dict[num] = nums.count(num)
sorted_dict = sorted(dict.items(), key = lambda x:x[1], reverse=True)
lst = [a[0] for a in sorted_dict]
return lst[:k]
Review
dict.items()
의 반환형태가 리스트안의 튜플 형태라서 오름차순으로 상위 k번째까지의 key값을 리스트 형태로 반환하기 위한 방법을 생각해보자.(1차에선 for문과 인덱스 사용한 언패킹 수행)
def top_k(nums, k):
dict = {num:nums.count(num) for num in nums}
return [a for a, b in sorted(dict.items(), key = lambda x:x[1], reverse=True)[:k]]
수정
- 딕셔너리 생성을 comprehension으로 짧게 수정
dict.items()
의 언패킹 방법 수정