CK week 2 day4

BnDC·2021년 9월 30일
0

code Kata

목록 보기
9/22

🧨 문제

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번째 까지의 원소의 두번째 요소를 담아 반환 한다.



📍 step1

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
생성한다.



📍 step2

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를 튜플의 두번째 요소로 정렬 한다.



📍 step3

def top_k(nums, k):
    #... ...#

    #... ...#

#step3
    for i in range(k):
      result.append(sorted_nums[i][0])

    return result

resultsorted_numsK번째 요소까지 담고 반환한다.

profile
“Life is C (Choice) between B (Birth) and D (Death).” - 인생은 B와 D사이의 C

0개의 댓글