Algorithm/문제

24. 멘토링 ★★★

챛채 2023. 7. 18. 15:32

 

4중 for문 사용해야 한다.

n=4, m=3

먼저 멘토, 멘티로 짝지을 수 있는 모든 경우의 수 체크 (멘토, 멘티)

짝지은 멘토, 멘티에서 조건에 만족하는지 체크

멘토, 멘티의 등수를 찾고 모든 테스트에서 멘토가 앞선다면 count++

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

public class Main {

    public int solution(int[][] arr, int n, int m) {
        int answer = 0;
        for (int i = 1; i <= n; i++) { //멘토
            for (int j = 1; j <= n; j++) { //멘티
                int cnt = 0;
                //(멘토, 멘티) 모든 경우의 수에서 조건에 만족하는 것 체크
                for (int k = 0; k < m; k++) { //0번 테스트 ~ 2번 테스트까지 (m=3)
                    int pi = 0, pj =0; //각 학생의 등수 저장
                    for (int s = 0; s < n; s++) { //0등~3등까지 (n=4)
                        if(arr[k][s] == i) pi = s; //멘토 등수
                        if(arr[k][s] == j) pj = s; //멘티 등수
                    }
                    if (pi < pj) cnt++; //등수가 앞서는 경우
                }
                if (cnt == m) { //멘토가 모든 경우에 등수가 앞선다면
                    answer++;
                }
            }
        }
        return answer;
    }
   public static void main(String[] args){
       Main T = new Main();
       Scanner kb = new Scanner(System.in);
       int n=kb.nextInt(); //반 학생 수
       int m=kb.nextInt(); //수학테스트 횟수
       int[][] arr =new int [m][n];
       for (int i = 0; i < m; i++) {
           for (int j = 0; j < n; j++) {
               arr[i][j]=kb.nextInt();
           }
       }
       System.out.println(T.solution(arr, n, m));
   }
}