Codecata ⎜ 과반수 이상인 숫자 출력하기

과반수 이상인 숫자 출력하기

문제

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

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

예를 들어, nums = [3,2,3] return 3

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

  • 가정 nums 배열의 길이는 무조건 2개 이상



내가 한 풀이

접근방법

  1. 과반수 값을 구한다.
  2. 주어진 리스트를 딕셔너리로 만든다.
  3. 딕셔너리 값 중 과반수보다 크거나 같은 키를 리턴한다.
def more_than_half(nums):
    count = len(nums)
    majority = (count // 2) + 1
    my_dic = {}
    for num in nums:
        if num not in my_dic:
            my_dic[num] = 1
        else:
            my_dic[num] += 1
    # print(majority)
    # print(my_dic)

    for key, value in my_dic.items():
        if value >= majority:
            return key


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



위코드 풀이

Boolean값을 변수선언으로 로직이 시작된다. 아직까지 Boolean 값을 변수로 주는 것에 대해 익숙하지 않다.

def more_than_half(nums):
    count = len(nums)
    majority = (count // 2) + 1
    my_dic = {}
    for num in nums:
        if num not in my_dic:
            my_dic[num] = 1
        else:
            my_dic[num] += 1
    # print(majority)
    # print(my_dic)

    for key, value in my_dic.items():
        if value >= majority:
            return key


print(more_than_half([3, 2, 3]))

댓글남기기