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가지가 있다..
간단하지만 조금 이해가 안가는데.. 조금 더 공부해봐야 될 듯 싶다😱😱
Author And Source
이 문제에 관하여(Code Kata | Day 7), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jacoblee19/Code-Kata-Day-7저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)