티스토리 뷰

Java/Coding Test

[코딩테스트] 멘토링

Jane Kwon 2022. 3. 13. 18:57
반응형

 

문제

현수네 반 선생님은 반 학생들의 수학점수를 향상시키기 위해 멘토링 시스템을 만들려고 합니다.

멘토링은 멘토(도와주는 학생)와 멘티(도움을 받는 학생)가 한 짝이 되어 멘토가 멘티의 수학공부를 도와주는 것입니다.

선생님은 M번의 수학테스트 등수를 가지고 멘토와 멘티를 정합니다.

만약 A학생이 멘토이고, B학생이 멘티가 되는 짝이 되었다면, A학생은 M번의 수학테스트에서 모두 B학생보다 등수가 앞서야 합니다.

M번의 수학성적이 주어지면 멘토와 멘티가 되는 짝을 만들 수 있는 경우가 총 몇 가지 인지 출력하는 프로그램을 작성하세요.

 

입력

첫 번째 줄에 반 학생 수 N(1<=N<=20)과 M(1<=M<=10)이 주어진다.

두 번째 줄부터 M개의 줄에 걸쳐 수학테스트 결과가 학생번호로 주어진다. 학생번호가 제일 앞에서부터 1등, 2등, ...N등 순으로 표현된다.

만약 한 줄에 N=4이고, 테스트 결과가 3 4 1 2로 입력되었다면 3번 학생이 1등, 4번 학생이 2등, 1번 학생이 3등, 2번 학생이 4등을 의미합니다.

 

출력

첫 번째 줄에 짝을 만들 수 있는 총 경우를 출력합니다.

 

 

 

예시 입력

4 3
3 4 1 2
4 3 2 1
3 1 4 2

예시 출력

3

 

 

 

 

 

문제 풀이

 

[첫번째 풀이]

import java.util.Scanner;

public class Main {
    public int solution(int n, int m, int[][] math) {
        int count = 0;

        for (int i=1; i<=n; i++) {
            for (int j=1; j<=n; j++) {
                if (i != j) {
                    boolean check = true;

                    for (int x=0; x<m; x++) {
                        int iRank = 0, jRank = 0;

                        for (int y=0; y<n; y++) {
                            if (math[x][y] == i) iRank = y;
                            if (math[x][y] == j) jRank = y;
                        }

                        if (iRank > jRank) {
                            check = false;
                            break;
                        }
                    }

                    if (check) count++;
                }
            }
        }

        return count;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();

        int[][] math = new int[m][n];
        for (int i=0; i<m; i++) {
            for (int j=0; j<n; j++) {
                math[i][j] = scanner.nextInt();
            }
        }

        Main main = new Main();
        System.out.println(main.solution(n, m, math));
    }
}

(Time 178ms / Memory 27MB)

 

 

 

- 처음에 문제를 제대로 안읽고 풀다가 계속 안풀려서 고생했다. 다시 백지부터 문제를 읽고 풀려다가 그냥 풀이 영상 보고 방법 터득하고 풀어보았다.

- 예시 문제로 예를 들면, 멘토-멘티로 짝을 구성할 수 있는 경우의 수는 총 4X4=16이다. 멘토로 for 문을 돌면서 멘티로 구성할 수 있는 이중 for 문을 돌면서, 3번의 시험만큼 다시 for 문을 돌면서 등수를 추출해내어 비교하여 푸는 방식이다.

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함