[알고리즘] 배열안의 가장 자주 등장하는 숫자를 K만큼 구하기
오늘 문제를 풀기위해 사용한 함수 또는 식
- 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 해준다.
Author And Source
이 문제에 관하여([알고리즘] 배열안의 가장 자주 등장하는 숫자를 K만큼 구하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@khmin1017/알고리즘-배열안의-가장-자주-등장하는-숫자를-K만큼-구하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)