본문 바로가기
알고리즘 문제풀이/인프런

[알고리즘] 2-12 멘토링 (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의)

by jeonghaemin 2021. 5. 20.
728x90

인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 간략한 문제 설명, 풀이 코드를 정리하고 있습니다.

  • 문제 링크 : https://cote.inflearn.com/contest/10/problem/02-12
  • 문제 설명 : m번의 수학 시험에서의 학생 n명 각각의 등수가 주어졌을 때 멘토 멘티 짝이 되는 경우의 수를 출력
    • 멘토 조건 : 멘티보다 모든 시험의 등수가 앞서야한다.

풀이

  • 4중 for문을 사용하여, 멘토 멘티가 되는 모든 경우의 수를 돌며 모든 시험에서 멘토가 등수가 높은 경우의 수를 카운트한다.
package inflearn.array;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

//멘토링
public class Main2_12 {

    public static int solution(int n, int m, int[][] arr) {
        int answer = 0;

        for (int i = 1; i <= n; i++) { //멘토
            for (int j = 1; j <= n; j++) { //멘티
                if (i == j) continue; 

                int count = 0;
                int mentor = 0; int mentee = 0; //멘토 멘티의 등수

                for (int k = 0; k < m; k++) { //k번째 시험

                    for (int s = 0; s < n; s++) { //등수

                        if (arr[k][s] == i) mentor = s;
                        if (arr[k][s] == j) mentee = s;
                    }

                    if (mentor < mentee){ //멘토가 등수가 더 높으면
                        count++;
                    }
                }

                if (count == m) { //멘토가 모든 시험에서 앞서면
                    answer++;
                }
            }
        }

        return answer;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken()); //학생 수
        int m = Integer.parseInt(st.nextToken()); //시험 수
        int[][] arr = new int[m][n];

        for (int i = 0; i < m; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 0; st.hasMoreTokens(); j++) {
                arr[i][j] = Integer.parseInt(st.nextToken());
            }
        }

        System.out.println(solution(n, m, arr));
    }
}

댓글