nums는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를 k 개수만큼 return
해주세요.
nums = [1, 1, 1, 2, 2, 3] k = 2 return [1, 2]
nums = [1] k = 1 return [1]
def top_k(nums, k):
#step1
set_nums=set(nums)
sorted_nums=[]
result=[]
if result > len(set_nums):
return 'k가 원소의 개수보다 많습니다'
#step2
for element in set_nums:
sorted_nums.append((element, nums.count(element)))
sorted_nums.sort(key = lambda x: x[1], reverse = True)
#step3
for i in range(k):
result.append(sorted_nums[i][0])
return result
수와 그 수가 등장하는 횟수를 튜플에 담아 리스트의 원소로 추가한 후,
그 리스트를 등장하는 횟수를 기준으로 정렬 한다.
리스트에서 k
번째 까지의 원소의 두번째 요소를 담아 반환 한다.
def top_k(nums, k):
#step1
set_nums=set(nums)
sorted_nums=[]
result=[]
if result > len(set_nums):
return 'k가 원소의 개수보다 많습니다'
nums
에 받은 요소에서 중복을 제거한 set_nums
,
nums
의 (원소, 원소가 등장하는 횟수)인 튜플을 원소가 등장하는 횟수로 정렬해 담을 sorted_nums,
sorted_nums
의 k번째 요소까지 담을 result
를
생성한다.
def top_k(nums, k):
#... ...#
#step2
for element in set_nums:
sorted_nums.append((element, nums.count(element)))
sorted_nums.sort(key = lambda x: x[1], reverse = True)
set_nums
의 원소를 순회하면서,
( 원소, nums
에 그 원소가 등장하는 횟수)를 담는다.
sorted_nums
를 튜플의 두번째 요소로 정렬 한다.
def top_k(nums, k):
#... ...#
#... ...#
#step3
for i in range(k):
result.append(sorted_nums[i][0])
return result
result
에 sorted_nums
의 K
번째 요소까지 담고 반환한다.