반응형
Notice
Recent Posts
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

500error

[COS Pro 2급, Python] 4차 8번 : 누가 반장이 될까요? 본문

알고리즘/파이썬

[COS Pro 2급, Python] 4차 8번 : 누가 반장이 될까요?

Internal Server Error 2024. 1. 4. 22:00
반응형

문제

1번부터 n번까지의 후보에 대한 투표 결과가 주어질 때, 과반수를 득표한 후보자의 번호를 구하려고 합니다. 여기서 과반수란 절반이 넘는 수를 의미합니다.
예를 들어, 1번부터 3번까지의 후보에 대한 투표 결과가 [1, 2, 1, 3, 1, 2, 1]이라면 순서대로 [1번, 2번, 1번, 3번, 1번, 2번, 1번] 후보에 투표했음을 나타내고, 이 경우 당선된 후보자의 번호는 1번입니다.
후보의 수 n, 투표 결과가 담긴 배열 votes, votes의 길이 votes_len이 매개변수로 주어질 때, 과반수를 득표한 후보자의 번호를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 작동하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

code

def solution(n, votes):
	answer = 0
	votes_len = len(votes)
	candidate = votes[0]
	count = 1
	for i in range (1, votes_len) :
		if candidate == votes[i] :
			count += 1
		else :
			count -= 1
		if count == 0 :
			candidate = votes[i]
			count = 1

	test_count = 0
	for i in range(0, votes_len) :
		if votes[i] == candidate :
			test_count += 1

	if test_count > votes_len // 2 :
		answer = candidate
	else :
		answer = -1

	return answer
    
    
    
n1 = 3
votes1 = [1, 2, 1, 3, 1, 2, 1]
ret1 = solution(n1, votes1)

print("solution 함수의 반환 값은", ret1, "입니다.")

n2 = 2
votes2 = [2, 1, 2, 1, 2, 2, 1]
ret2 = solution(n2, votes2)

print("solution 함수의 반환 값은", ret2, "입니다.")
반응형
Comments