오늘도 개발

위코드 코드카타 Week2 Day4 - 자주 등장한 숫자 k번째까지 반환 본문

자료구조 & 알고리즘/위코드 코드카타

위코드 코드카타 Week2 Day4 - 자주 등장한 숫자 k번째까지 반환

Sueeeeeee 2022. 7. 14. 19:12

문제

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

자주 등장한 숫자를 나열했을 때 k번째까지 리스트에 담아 반환하세요.

nums = [4,4,4,5,5,7], k = 2이면
return [4,5]

 

내가 해결한 방식

def top_k(nums, k):
    counts = {}

	# 키로 사용할 값 추출
    unique_nums = set(nums)
    
    # counts 딕셔너리에 '숫자:숫자의 반복 횟수' 저장
    for num in unique_nums:
        counts[num] = nums.count(num) 
	
    # nums 요소를 자주 반복된 요소부터 덜 반복된 요소 순으로 정렬
    # (counts 딕셔너리의 키를, 값을 기준으로 정렬하고, 역순으로 다시 정렬한 리스트 생성)
    sorted_counts = sorted(counts, key=counts.get, reverse=True)
    
    # 정렬된 리스트에서 k번째 값까지만 남김
    return sorted_counts[:k]