리스트 과반이상의 수는?

BG·2021년 6월 1일
0

ALGORITHM

목록 보기
2/7

문제

숫자로 이루어진 배열인 nums를 인자로 전달합니다.

숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.

예를 들어,

nums = [3,2,3]
return 3

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

가정

nums 배열의 길이는 무조건 2 이상입니다.

나의 풀이

일단 문제를 보고 set으로 중복을 제거한 다음 어떻게 해볼까도 생각했지만,
간편하게 dictionary에 담아서 sort를 하기로 했다.

  • 주어지는 리스트에서 중복되는 숫자의 개수가 몇개인지 알수 없다.
  • dictionary에 주어지는 숫자를 key값으로 key값에 해당되는 숫자의 개수를 value로 해서 담아주자.
  • 내림차순으로 sort를 해서, 첫번째 값을 가져오자
def more_than_half(nums):
    dict = {}
    
    for i in nums:
      if not dict.get(i):
        dict[i] = 1
      else:
        dict[i] += 1

    new_list = sorted(dict.items(), key=lambda x: x[1], reverse=True)

    return new_list[0][0]
    
print(more_than_half([3,2,3]))
profile
글쎄...?

0개의 댓글