알고리즘

C++ 반장 선거

Chars4785 2019. 1. 4. 12:35

백준 1268 문제 


입력

첫째 줄에는 반의 학생 수를 나타내는 정수가 주어진다. 학생 수는 3 이상 1000 이하이다. 둘째 줄부터는 1번 학생부터 차례대로 각 줄마다 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 5개의 정수가 빈칸 하나를 사이에 두고 주어진다. 주어지는 정수는 모두 1 이상 9 이하의 정수이다.

출력

첫 줄에 임시 반장으로 정해진 학생의 번호를 출력한다. 단, 임시 반장이 될 수 있는 학생이 여러 명인 경우에는 그 중 가장 작은 번호만 출력한다.



5
2 3 1 7 3
4 1 9 6 8
5 5 2 4 4
6 5 2 6 7
8 4 2 2 2


4


조심 !!


같은 학생과 같은 반을 많이 했다고 해서 그 사람이 반장이 되는 것은 아니다. 



#include <iostream>
#include <vector>

using namespace std;

int countLeader[1000];

int main() {

int student,count=0,temp=0,position;
cin >> student;

int array[student][5];
for(int i=0;i<student;i++)
for(int j=0;j<5;j++)
cin>>array[i][j];

for(int i=0;i<student;i++)
{
for(int j=0;j<student;j++)
{
for(int m=0;m<5;m++)
{
if(array[i][m]==array[j][m])
countLeader[j]++;
}
}

for(int z=0;z<student;z++)
{
if(countLeader[z] != 0)
{
count++;
countLeader[z]=0;
}
}

if(temp < count)
{
temp = count;
position = i;
}

count=0;
}

cout<< position+1;


return 0;

}