CodeKata (4째주 화요일)

Daehwi Kim·2020년 6월 16일
0

문제 :

숫자로 이루어진 배열인 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):
	harf_n = len(nums) // 2
	set_list = set(nums)
	
	for i in set_list:
	  if nums.count(i) >= harf_n:
	    return i

과반수의최소 숫자를 정하고, 리스트를 셋으로 설정한다음
셋리스트를 for문으로 돌리면서 count 함수를 이용하여, 과반수의 숫자를 구하였다.

모범 답안


def more_than_half(nums):
	majority_count = len(nums)//2
	for num in nums:
		count = sum(1 for elem in nums if elem == num)
		if count > majority_count:
			return num
            

여기도 마찬가지로 과반수의 최소숫자를 설정하였다.
그치만, for문안에 제너레이터와 sum 함수를이용하여 num을 구했다.

profile
게으른 개발자

0개의 댓글