728x90

)

import java.util.Scanner;

public class AppointingTempLeader {
    public static int solution(int n, int[][] students) {
        int answer = 0, max = Integer.MIN_VALUE;
        for (int i = 1; i <= n; i++) {
            int cnt = 0;
            for (int j = 1; j <= n; j++) {
                for (int k = 1; k <= 5; k++) {
                    if (students[i][k] == students[j][k]) {
                        cnt++;
                        break;
                    }
                }
            }
            if(cnt > max) {
                max=cnt;
                answer=i;
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[][] students = new int[n + 1][6];

        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= 5; j++) {
                students[i][j] = in.nextInt();
            }
        }
        System.out.println(solution(n, students));
    }
}

 

 

문제풀이

  1. 학생수와 배열의 index를 같게 하고 5학년 까지만 있으므로 [n+1][6]의 2차원 배열을 생성

  1. 3중 for문으로 1번 학생의 1 ~ 5학년 까지 같은 반이였던 학생을 만나면 cnt 를 + 1하고 break 한다.
  2. 같은 반인 학생 수를 카운트하는 cnt를 max 값과 비교하여 max에 저장하고 answer에 i 번 학생을 저장한다.
728x90