본문 바로가기
코테

백준 1268번 - 임시반장 정하기

by arirang_ 2023. 8. 13.
#include <bits/stdc++.h>
using namespace std;

bool visitedStd[1001];
int maxCnt;
int ansStd;
int n;
int main(){
	cin >> n;
	vector<vector<int>>v (n, vector<int>(5));
	
	for(int i=0; i<n; i++){
		for(int j=0; j<5; j++){
			cin >> v[i][j];
		}
	}
	
	for(int i=0; i<n; i++){
		memset(visitedStd, 0, sizeof(visitedStd));
		int cnt =0;		
		//돌아가면서 세기 
		for(int j=0; j<5; j++){
			int std = v[i][j];            //기준 잡기 
			for(int k=0; k<n; k++){
				if(i != k && std==v[k][j]){
					if(!visitedStd[k]){
						visitedStd[k] = 1;    //중복 방지 
						cnt++;
					}
				}
			}
			if(maxCnt < cnt){
				maxCnt = cnt;
				ansStd = i+1;          //학생번호는 행에 1을 더하면 됨. 
			} 
			
		}
	}	
	cout << ansStd;
	
	return 0;
}

** 같은 반으로 한번 추가한 학생은 다른 학년에서 같은 반이였더라도 다시 세지 않는다.(중복 X)

따라서 bool형 visitedStd를 추가하고 memset을 이용하여 중복을 방지한다. 

 

** count하기 위한 학생을 기준 잡고 for문을 돌며 count한다. 

int std = v[i][j];

'코테' 카테고리의 다른 글

백준 1063번 -킹  (0) 2023.08.13
백준 1284번-집 주소  (0) 2023.08.13
백준 1264번-모음의 개수  (0) 2023.08.07
백준 1259번 - 팰린드롬수  (0) 2023.08.07
백준 10808번 - 알파벳 개수  (0) 2023.08.07