TIL - CodeKata(7)

김영훈·2021년 4월 9일
0

ETC

목록 보기
8/34

# 문제

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

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

예를 들어,

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

# 가정

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

# 나의 풀이

def more_than_half(nums):

    x = list(set(nums))
    y = {}

    for v in x:
        y['{}'.format(v)] = nums.count(v)

    z = max([x for x in y.values()])
    reversed_y = dict(map(reversed, y.items()))

    result = reversed_y[z]

    return int(result)

# review

  • 배열 nums에 있는 숫자들의 개수를 count()로 구하기 위해 nums 배열에서 중복된 숫자를 제거한 변수 x=list(set(nums))를 생성

  • set()은 iterable하지 않아서, for문으로 요소를 차례대로 꺼내는 것이 불가능하다.

  • 딕셔너리의 key와 value 위치를 바꾸는 방법

    • list comprehension 사용

    • map() 사용

    a = {'a': 5, 'c': 23, 'b':10}
    # list comprenesion
    a_reversed = {v:k for k, v in a.items()}
    # 맵 함수 사용
    a_reversed_2 = dict(map(reversed, a.items())) 
profile
Difference & Repetition

0개의 댓글