Algorithm/문제

23. 임시반장 정하기

챛채 2023. 6. 27. 16:26

2차원 배열을 생성하여 이중for문으로 문제를 푸는데

arr[n+1][6] //1번부터 사용할 거니까 n+1

for i(1~5) //명수

     for j(1~5) //명수

        for k (1~5) //학년

a[i][k] == a[j][k]  //i번 학생의 k학년과 j번 학생의 k학년이 같은지 비교 참이면 cnt ++;

 

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public int solution(int n, int[][] arr) {
        int answer=0, max=Integer.MIN_VALUE;
        for (int i = 1; i <= n; i++) {
            int cnt=0; //같은 반 했던 횟수 count
            for (int j = 1; j <= n; j++) {
                for (int k = 1; k <= 5; k++) {
                    //1학년 때부터 5학년 때까지
                    if (arr[i][k] == arr[j][k]) {
                        cnt ++;
                        break; //주의
                    }
                }
            }
            if (cnt > max) {
                max=cnt;
                answer=i; //최댓값을 만드는 i번 학생
            }
        }
        return answer;
    }
   public static void main(String[] args){
       Main T = new Main();
       Scanner kb = new Scanner(System.in);
       int n=kb.nextInt();
       int[][] arr =new int [n+1][6];
       for (int i = 1; i < n; i++) {
           for (int j = 1; j <= 5; j++) {
               arr[i][j]=kb.nextInt();
           }
       }
       System.out.println(T.solution(n, arr));
   }
}