오늘 문제를 풀기위해 사용한 함수 또는 식
- sort
- set
- lambda 형식
nums는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를 k 개수만큼 return 해주세요.
예를들어 nums = [1,1,1,2,2,3], k = 2면
[1,2] return
def top_k(nums, k):
nums_list = []
result = []
for i in set(nums):
nums_list.append((i,nums.count(i)))
nums_list.sort(key=lambda x:x[1], reverse = True)
for i in range(k):
result.append(nums_list[i][0])
return result
- 배열안의 어떤 숫자가 몇개씩 있는지를 계산해서 넣어줄 빈 리스트와 결과 값을 담을 빈 리스트를 만들어준다.
- 배열을 set 함수를 통해 중복값을 제거하여 for문을 돌려준다
- for문을 통해 나온 수가 최초 배열안에 몇개씩 있었는지 count함수를 통해 계산한다.
- 계산해서 나온 수를 튜플에 넣어 리스트에 append 해준다.(숫자, 숫자의 개수)
- lambda 식을 이용하여 리스트 안의 튜플들을 [1] 인덱스를 기준으로 내림차순 해준다.
- 내림차순 해준 수를 for 문을 돌려 k 숫자만큼 인덱스하여 result에 append 해준다.