https://www.acmicpc.net/problem/1268

 

1268번: 임시 반장 정하기

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

www.acmicpc.net

 

[난이도] Bronze1
[유형] 구현

[풀이]
각 학생의 반 정보를 a[1001][5] 배열에 저장한 뒤,
0~4 학년 순서로 순회하면서
이중 for문을 이용해 각 학생과 같은 반이었던 학생을 set에 저장을 해줍니다.
set을 이용하는 이유는 a,b가 1학년때 같은 반이었는데 3학년때 또 같은반이 된다고
a와 같은 반이었던 학생이 추가되는 것이 아니기 때문입니다.

 

#include <cstdio>
#include <set>
#include <vector>
using namespace std;
int N,a[1001][5],mi,mv;
set<int> same[1001];
int main(){
    scanf("%d",&N);
    for(int i=0;i<N;i++){
        for(int j=0;j<5;j++){
            int p;
            scanf("%d",&p);
            a[i][j]=p;
        }
    }
    for(int i=0;i<5;i++){
        for(int j=0;j<N;j++){
            for(int k=0;k<N;k++){
                if(j!=k&&a[j][i]==a[k][i]) same[j].insert(k);
            }
        }
    }
    for(int i=0;i<N;i++){
        if(same[i].size()>mv){
            mv=same[i].size();
            mi=i;
        }
    }
    printf("%d",mi+1);
}


https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Bronze1/1268.cpp

+ Recent posts