[COS PRO 2급-Python] 누가 반장이 될까요?

Sunhee·2023년 6월 30일

COS PRO - Python 2급

목록 보기
38/44

[COS PRO 2급-Python] 누가 반장이 될까요?

문제 설명

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 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 작동하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.


### 매개변수 설명 후보의 수 n, 투표 결과가 담긴 배열 votes, votes의 길이 votes_len이 solution함수의 매개변수로 주어집니다.
  • n은 1 이상 100 이하의 자연수입니다.
  • votes의 각 원소는 1 이상 n 이하의 자연수입니다.
  • votes_len은 1 이상 1,000이하의 자연수입니다.



return 값 설명

과반수를 득표한 후보자의 번호를 return 해주세요.

  • 만약, 과반수를 득표한 후보자가 없다면 -1을 return 해주세요.

예시


알고리즘 구상

▶ test_count = 1 count하는 부분은 test_count += 1을 해준다.


내가 쓴 코드!


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

0개의 댓글