본문 바로가기

cospro2급/cospro_4차

2021-05-21

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);    
}

 

 

goorm

구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.

www.goorm.io

 

'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