Code Kata | Day 7

> 문제

숫자로 이루어진 배열인 nums를 인자로 전달합니다.
숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.

예를 들어,

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

내 답안

def more_than_half(nums):
    half_nums = len(nums) // 2
    set_list = set(nums)
  
    for i in set_list:
        if nums.count(i) >= half_nums:
        return i

숫자 중에서 과반수가 넘은 숫자를 반환해야하기 때문에 half_nums라는 변수를 만들어 버림나눗셈으로 반의 길이를 구한다.

그 다음 list nums를 set으로 변화시켜서 set_list에다가 저장해 준 후, for 문으로 중복이 없는 set_list를 돌려준다.
count 함수로 set_list의 i를 nums에 몇 개나 있는지 세주어서 그 것이 nums 전체 길이의 반인 half_nums보다 크거나 같으면 i가 과반수이기 때문에 리턴해준다.

모범 답안

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


#아니면 hashmap
# import collections

# def more_than_half(nums):
# 	counts = collections.Counter(nums)
# 	return max(counts.keys(), key=counts.get)

#아니면 sort
# def more_than_half(nums):
# 	nums.sort()
# 	return nums[len(nums)//2]

hashmap이란 것과 sort까지... 이번 모범 답안은 총 3가지가 있다..
간단하지만 조금 이해가 안가는데.. 조금 더 공부해봐야 될 듯 싶다😱😱

좋은 웹페이지 즐겨찾기