TIL | 알고리즘 | 코드카타 9일 (2주 4일)

이도운·2022년 1월 20일
0

TIL

목록 보기
58/73
post-thumbnail

문제

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

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

풀이

import operator

def top_k(nums, k):
  nums_dict = {}
  max_list = []

  for num in nums:
    if num not in nums_dict:
      nums_dict[num] = 1
    else:
      nums_dict[num] += 1

  sorted_nums_dict= sorted(nums_dict.items(), key=operator.itemgetter(1), reverse=True)

  for i in range(0, k):
    max_num = sorted_nums_dict[i][0]
    max_list.append(max_num)

  return max_list

top_k([1,1,1,2,2,2,2,2,3], 2)

힌트는 딕셔너리를 정렬하는 것이다. value를 기준으로 정렬한다면 k번째 숫자까지 가져오면 될 일이다.

profile
⌨️ 백엔드개발자 (컴퓨터공학과 졸업)

0개의 댓글