중복 숫자 순위별 뽑기

BG·2021년 6월 3일
0

ALGORITHM

목록 보기
4/7

문제

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

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

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

return [1,2]

nums = [1]
k = 1

return [1]

나의 풀이

숫자 중복이 몇개 인지 카운트 하여 k순위 만큼 리스트에 담아서 리턴하면 끝이 날것 같다.

  • 숫자가 얼마 만큼 중복인지를 카운트하기 위해 dictionary를 사용한다.
  • 숫자 카운트가 담긴 dictionary를 value값으로 내림차순 정렬 한다.
  • k순위 만큼 리스트에 담아 return 한다.
def top_k(nums, k):
    # 여기에 코드를 입력해주세요
    dict = {}
    
    for i in nums:
      if not dict.get(i): dict[i] = 1
      else: dict[i] += 1
   
    new_dict = sorted(dict.items(), key=lambda x: x[1], reverse=True)
    
    return [new_dict[i][0] for i in range(0, len(new_dict)) if i < k]

print(top_k([1,1,1,2,2,3], 2))
profile
글쎄...?

0개의 댓글