📍문제
nums는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를 k 개수만큼 return 해주세요.
nums | k | return |
---|---|---|
[1,1,1,2,2,3] | 2 | [1,2] |
[1] | 1 | [1] |
[2,2,3,3,3,4,4,4,4,5] | 1 | [4] |
def top_k(nums, k):
a={}
for i in nums:
if i not in a:
a[i] = 1
else:
a[i]=a[i]+1
print(a)
return [sorted(a.items(),reverse=True,key=lambda x:x[1])[i][0] for i in range(k)]
def top_k(nums, k):
a={i : nums.count(i) for i in set(nums)} #{set(nums):nums.count }
return [sorted(a.items(),reverse=True,key=lambda x:x[1])[i][0] for i in range(k)]
🌱[sorted(a.items(),reverse=True,key=lambda x:x[1])[i][0] for i in range(k)]
sorted
정렬하다(오름차순)a.items()
a의 key,value 를reverse = True
내림차순으로 정렬key=lambda x:x[1]
a의 value를 기준으로 정렬#ex
a=[(1, 2), (5, 1), (0, 1), (5, 2), (3, 0)]
sorted(a, key = lambda x : x[0]) #key를 기준으로 정렬
#[(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
sorted(a, key = lambda x : x[1]) #value를 기준으로 정렬
#[(3, 0), (5, 1), (0, 1), (1, 2), (5, 2)]