[Algorithm] 2주차 2번 문제

김상웅·2022년 6월 14일
0

[알고리즘]

목록 보기
6/18

📌 문제


숫자로 이루어진 배열인 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
profile
누구나 이해할 수 있도록

0개의 댓글