[알고리즘] 자주 등장하는 숫자

짱구석·2020년 11월 13일
0
post-thumbnail

오늘의 문제


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

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

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

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

return [1]

개념


  • 각 숫자의 개수를 카운팅해서 '숫자:개수'의 딕셔너리 생성
  • 그 중 가장 values의 가장 큰 값의 key 부터 k 만큼 result에 insert

나의 풀이


def top_k(nums, k):
  dict = {}
  result = []
	# 숫자:개수 딕셔너리 생성
  for v in nums:
    if v not in dict.keys():
      dict[v] = 1
    else:
      dict[v] += 1
  
  for _ in range(k):
    key = 0
    max = 0
		# 가장 큰 value를 찾아서 result에 insert
    for k,v in dict.items():
      if v > max:
        max = v
        key = k
    result.append(key)
    # 해당 데이터 제거
		dict.pop(key)
  return result

print(top_k([1,1,1,2,2,3],2))

0개의 댓글