nums
는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를 k
개수만큼 return 해주세요.
nums = [1,1,1,2,2,3],
k = 2
return [1,2]
nums = [1]
k = 1
return [1]
def top_k(nums, k):
a = set(nums) # nums안의 요소들이 중복되지 않게 집합으로 바꿈
b = {}
arr = []
for i in a: # 집합의 원소들을 하나하나 뽑아내어
b[i] = nums.count(i) # 딕셔너리안에 키값에는 해당 숫자, value값에는 nums리스트안에 숫자의 갯수를 넣는다.
for j in range(k): # k개 만큼 뽑아야 하므로 k기준으로 for문을 실행
max_key = max(b, key = b.get) # max_key라는 변수에는 b딕셔너리안에서 가장 큰 value값을 갖는 것의 key값을 넣어준다.
arr.append(max_key) # max_key를 arr리스트에 넣고
b.pop(max_key) # 그 다음의 최대값을 찾는 경우가 있으니 최대값을 갖고 있는 원소는 삭제한다.
return arr # arr 출력
결과는 정답!