Code Kata | day9 top_k

juri·2021년 7월 29일
0

Code Kata

목록 보기
9/15
post-thumbnail

Q. nums는 숫자로 이루어진 배열입니다.

가장 자주 등장한 숫자를 k 개수만큼 return 해주세요.

☑️ 0차

  • 새로운 딕셔너리에 key값에 등장하는 숫자, value값에 등장한 횟수를 저장한다.
  • sorted 함수로 딕셔너리의 value값을 기준으로 딕셔너리를 정렬한다.
  • k번째 인덱스까지 슬라이싱해서 반환한다.

☑️ 1차 (pass)

def top_k(nums, k):
    
    dict={}
    for num in nums:
      dict[num] = nums.count(num)

    sorted_dict = sorted(dict.items(), key = lambda x:x[1], reverse=True)
    lst = [a[0] for a in sorted_dict]
    return lst[:k] 

Review

  • dict.items()의 반환형태가 리스트안의 튜플 형태라서 오름차순으로 상위 k번째까지의 key값을 리스트 형태로 반환하기 위한 방법을 생각해보자.(1차에선 for문과 인덱스 사용한 언패킹 수행)

☑️ 2차 (pass)

def top_k(nums, k):

    dict = {num:nums.count(num) for num in nums}
    
    return [a for a, b in sorted(dict.items(), key = lambda x:x[1], reverse=True)[:k]]

수정

  • 딕셔너리 생성을 comprehension으로 짧게 수정
  • dict.items()의 언패킹 방법 수정
profile
Make my day !

0개의 댓글