code-taka 08(top_k)

nichol·2022년 5월 21일
0

Algorithm & DataStructure

목록 보기
8/12

문제

nums는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를 k 개수만큼 return 해주세요.

풀이

풀이과정1

  1. 빈 딕셔너리를 만드는데 딕셔너리의 역할은 키값의 숫자, value값에는 key값숫자를 리스트에서 count하여 넣는다
  2. value값을 기준으로 key값을 정렬하는데 내림차순으로 정렬한다.
    • sorted 함수의 기본값은 오름차순이다. 여기에 내림차순으로 정렬하고 싶으면 reverse=True
  3. 내림차순으로 정렬된 key값을 k갯수만큼 슬라이싱하여 리턴한다.
def top_k(nums, k):
  dic = {} 

  for i in nums:
    dic[i] = nums.count(i)                                # 풀이과정1

  a = sorted(dic, key = lambda x : dic[x], reverse=True)  # 풀이과정2
  b = a[:k]                                               # 풀이과정3
  return b

풀이과정2 : 다른풀이법 collections모듈 Counter클래스 활용

from collections import Counter

def top_k(nums, k):

  dic = dict(Counter(nums))                                # 풀이과정1

  a = sorted(dic, key = lambda x : dic[x], reverse=True)  # 풀이과정2
  b = a[:k]                                               # 풀이과정3
  return b
profile
WEB Developer

0개의 댓글