TIL84. Codekata(9)

Jaeyeon·2021년 4월 8일
0
post-thumbnail

문제

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 출력

결과는 정답!

profile
생각하는 개발자 되기

0개의 댓글

관련 채용 정보