codekata9.

rahula·2021년 7월 3일
0

algorithm

목록 보기
9/9

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

문제파악

요구사항 : 각 리스트 요소의 갯수를 세고, 어떤 게 더 많은지를 알 수 있도록 해라.

인풋 : 많은 숫자로 이루어진 리스트

아웃풋 : k만큼의 길이를 가진 리스트

생각과정

k를 카운트로 써서, 갯수가 많은 순서대로 리스트에 넣으면 되겠다.

딕셔너리에 숫자와 갯수를 key value로 넣은 다음에,
value끼리 비교를 하는거야. max함수를 쓰든지 해서.
가장 높은게 있을 때 기존의 딕셔너리에서 그 값을 없애고, 리스트에 차곡차곡 넣는다.

첫번째 방법

def top_k(nums, k):
	my_dict = {}
    for i in nums:
    	my_dict[i] = nums.count(i)
	result = max(my_dict, key=my_dict.get)
    return result

두번째 방법

def top_k(nums, k):
	my_dict = {}
    	for i in set(nums):
    		my_dict[i] = nums.count(i)
	sorted_dict = sorted(my_dict.items(), key=lambda item: item[1], reverse=True)
        my_list = []
        for i  in range(0, k):
        	my_list.append(sorted_dict[i][0])
    return my_list
profile
백엔드 지망 대학생

0개의 댓글