숫자로 이루어진 배열인 nums를 인자로 전달합니다.
숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환하는 프로그램을 작성해주세요.
예를 들어,
nums = [3,2,3]
return 3
nums = [2,2,1,1,1,2,2]
return 2
특정 숫자가 리스트 안에 몇개가 있는지 판단하는 문제입니다.
과반수라는 의미는 리스트의 길이의 절반을 넘느냐를 판단하면 되겠습니다.
빈 딕셔너리를 새로 만들어 리스트로 받는 원소를 key
값으로 받고, 그 숫자의 중복되는 개수만큼 value
에 더해줍니다.
풀이 코드를 통해 알아보겠습니다:
def answer(nums):
# 새로운 딕셔너리에 {숫자: 중복개수} 넣기
new_dict = {}
for num in nums :
if num in new_dict :
new_dict[num] += 1
else :
new_dict[num] = 1
# key 값의 value를 순회하며 리스트의 절반보다 큰 value를 가진 (과반수 이상인) key 반환
for key in new_dict :
if new_dict[key] > len(nums) / 2
return key