CK 024 | Week2 - Day4

This Is Empty.·2021년 9월 30일
0

codekata

목록 보기
24/35
post-thumbnail

문제

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

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

nums = [1,1,1,2,2,3],
k = 2

return [1,2]

nums = [1]
k = 1

return [1]

내가 작성한 코드

from collections import Counter
from operator import itemgetter

def top_k(nums, k):
  # 여기에 코드를 입력해주세요
  return list(sorted(Counter(nums).items(), key=itemgetter(1), reverse=True)[i][0] for i in range(k))
 
  1. 먼저 Counter로 nums안에 어떤 숫자가 몇번 들어갔는지 구해준다. { key(숫자) : value(개수)}

  2. 그 다음 정렬을 해 주어야 하는데 많이 들어간 숫자 기준으로 정렬하기 위해 itemgetter를 사용해 value값으로 정렬하고 내림차순으로 정렬한다.

  3. 그리고 많이 들어간 숫자를 k만큼 리턴해야 하므로 반복문을 사용해 리스트에 키값만 담아 리턴한다

예시

nums = [1,2,2,2,2,3,3]

  • 1번 수행
    {1:1, 2:4, 3:2}

  • 2번 수행
    [(2,4), (3,2), (1,1)]

  • 3번 수행
    [2,3]

profile
Convinced myself, I seek not to convince.

0개의 댓글