본문 바로가기

알고리즘/백준

백준1268 - 임시반장정하기(브론즈1)

반응형

문제출처 : https://www.acmicpc.net/problem/1268

 

1268번: 임시 반장 정하기

오민식 선생님은 올해 형택초등학교 6학년 1반 담임을 맡게 되었다. 오민식 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다. ��

www.acmicpc.net

문제풀이> 풀이시 주의 할점은 2학년때 3번과 4번이 같은 반이었고 3학년때 3번과 4번이 같은 반이었을때 같은반이었던 친구를 한명으로 세어 주어야 한다.

따라서 2차원배열 1번부터 1000번까지 에서 같은 반이었던 친구의 번호를 셋팅 한 후 그 수가 가장 큰 수를 찾아 주면 된다.

단, 모두 반이 다 달랐을때 1번을 출력해야 된다.

#include <iostream>

using namespace std;

int cnt[1010][1010];
int student[1010][10];

int main()
{
    int n;
    cin >> n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=5;j++) cin >> student[i][j];
    }

    for(int k=1;k<=5;k++)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(i==j) continue;
                if(student[i][k]==student[j][k])
                {
                    cnt[i][j]=1;
                }
            }
        }
    }
    int maxcnt = 0;
    int res = 1; ///모든 사람이 서로 다른 경우는 1번을 출력하자
    for(int i=1;i<=n;i++)
    {
        int c=0;
        for(int j=1;j<=n;j++) c+=cnt[i][j];
        if(maxcnt<c)
        {
            maxcnt=c;
            res=i;
        }
    }
    cout <<res;

    return 0;
}

 

반응형