인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

11. 임시반장정하기

무엇이 오답인지 모르겠습니다...

작성

·

302

·

수정됨

0

예시 입력 이 외 다른 값으로 입력해도 올바른 값이 나오는데 오답이 나오는 이유가 무엇일까요...?

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

        int[][] arr = new int[n][5];
        for (int i = 0; i < n; i++) {
            for (int t = 0; t < 5; t++) {
                arr[i][t] = in.nextInt();
            }
        }

        int[] result = new int[n];
        for (int i = 0; i < n; i++) {
            for (int t = 0; t < 5; t++) {
                for (int j = 0; j < n; j++) {
                    if (i == j) continue;
                    if (arr[i][t] == arr[j][t]) {
                        result[i]++;
                        break;
                    }
                }
            }
        }

        int max_index = 0;
        for (int i = 0; i < result.length; i++) {
            if (result[i] > result[max_index]) {
                max_index = i;
            }
        }
        System.out.print(max_index + 1);
    }

 

예시 입력을 넣으면

5
2 3 1 7 3
4 1 9 6 8
5 5 2 4 4
6 5 2 6 7
8 4 2 2 2

 

학생 순서대로 학년마다 같은 반 이였던 적이 있는 학생이면 +1을 해서 result 배열에 넣어주었습니다.

[0, 1, 2, 3, 1]

 

마지막으로 result 배열 안에 가장 큰 수를 가진 인덱스에 +1을 해서 출력했습니다.

4

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

result[i] 가 i번 학생과 같은 반을 한 학생수인 걸로 해석됩니다.

만약 입력이

2

1 2 3 4 5

1 2 3 4 5

라고 입력되면 위에 코드는 result = [5, 5] 라는 결과가 나옵니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기