cospro 8번 문제
누가 반장이 될까요?
문제 설명
1번부터 n번까지의 후보에 대한 투표 결과가 주어질 때, 과반수를 득표한 후보자의 번호를 구하려고 한다. 여기서 과반수란 절반이 넘는 수를 의미한다.
후보의 수 n, 투표 결과가 담긴 배열 votes, votes의 길이 votes_len이 매개변수로 주어질 때, 과반수를 득표한 후보자의 번호를 return 하는 solution 함수를 완성한다.
매개변수 설명
후보의 수 n, 투표 결과가 담긴 배열 votes, votes의 길이 votes_len이 매개변수로 주어진다.
n은 1 이상 100 이하의 자연수이다.
votes의 각 원소는 1 이상 n 이하의 자연수이다.
votes_len은 1 이상 1000 이하의 자연수이다.
return 값 설명
과반수를 득표한 후보자의 번호를 return 한다.
만약, 과반수를 득표한 후보자가 없다면 -1을 return 한다.
예시
예시 설명
코드 설명
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int n, int votes[], int votes_len) {
int arr[101] = {0, };
for(int i=0; i<votes_len; i++) {
arr[votes[i]]++;
}
//후보자의 득표수를 배열방과 일치한 방에 넣어준다.
//1번 후보자의 득표수는 1번방에, 2번 후보자의 득표수는 2번방에 넣어준다.
for(int i=1; i<n+1; i++) //배열방은 0부터 시작하고, 후보자는 1번부터 시작하니 i를 1부터 시작
if(arr[i] > votes_len/2) //과반수는 득표수의 절반 이상이다.
return i;
return -1;
}
int main() {
int n1 = 3;
int votes1[7] = {1, 2, 1, 3, 1, 2, 1};
int votes_len1 = 7;
int ret1 = solution(n1, votes1, votes_len1);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret1);
int n2 = 2;
int votes2[7] = {2, 1, 2, 1, 2, 2, 1};
int votes_len2 = 7;
int ret2 = solution(n2, votes2, votes_len2);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret2);
}
'cospro2급 > cospro_4차' 카테고리의 다른 글
2021-05-22 (0) | 2021.05.22 |
---|---|
2021-05-22 (0) | 2021.05.22 |
2021-05-21 (0) | 2021.05.21 |
2021-05-20 (0) | 2021.05.20 |
2021-05-20 (0) | 2021.05.20 |