Algorithm/inflearn

★★멘토링

마닐라 2021. 9. 10. 17:38

import java.util.*;

class Main {
    public static int solution(int n, int m, int[][] arr){
        //짝을 만들 수 있는 경우
        int answer = 0;

        // arr[m][n]
        // n이 학생 수고 m이 테스트 횟수

        //arr[0][0] - 0번 테스트에서 1등한 학생의 학생번호
        //arr[0][1] - 0번 테스트에서 2등한 학생의 학생번호
        //arr[0][2] - 0번 테스트에서 3등한 학생의 학생번호
        //arr[0][3] - 0번 테스트에서 4등한 학생의 학생번호

        //i번 학생과 j번 학생의 k번의 테스트에서 등수찾아서 비교한다.
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= n; j++) {
                boolean flag = true;
                for(int k = 1; k <= m; k++) {
                    //i번 학생의 k번째 테스트에서 등수
                    int is = 0;
                    //j번 학생의 k번째 테스트에서 등수
                    int js = 0;

                    //i, j번 학생의 k번째 테스트에서 등수를 찾아야 한다.
                    for(int s = 1; s <= n; s++) {
                        //i번 학생의 등수를 찾으면 등수를 넣어주기
                        if(arr[k][s] == i) is = s;
                        //j번 학생의 등수를 찾으면 등수를 넣어주기
                        if(arr[k][s] == j) js = s;
                    }
                    //i번 학생과 j번 학생 등수를 비교해보기
                    //i가 더 크면(등수가 낮으면) 안됨!
                    if(is >= js) flag = false;
                }
                //k번 테스트 모두 i 학생이 j 학생보다 순위가 높으면 멘토 멘티 가능
                if(flag) answer++;

            }
        }

        System.out.println(answer);
        return answer;
    }

    public static void main(String[] args){
        Scanner kb = new Scanner(System.in);

        int n = kb.nextInt();
        int m = kb.nextInt();
        int[][] arr = new int[m+1][n+1];

        for(int i = 1; i <= m; i++) {
            for(int j = 1; j <= n; j++) {
                arr[i][j] = kb.nextInt();
            }
        }

        solution(n,m,arr);
    }
}

'Algorithm > inflearn' 카테고리의 다른 글

★공통원소 구하기  (0) 2021.09.13
#★두 배열 합치기  (0) 2021.09.13
★임시반장 정하기  (0) 2021.09.10
★봉우리  (0) 2021.09.10
격자판 최대합  (0) 2021.09.08