강의

멘토링

로드맵

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

왕연성님의 프로필 이미지
왕연성

작성한 질문수

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

11. 임시반장정하기

2-11. 임시반장정하기 (Runtime Error)

작성

·

10

0

이미지와 같이 Runtime Error 발생하여, 검토 요청드립니다.

스크린샷 2025-10-28 오후 5.15.20.png.webp
import java.util.*;

public class Main {

    private int solution (int i1, int[][] i2) {

        int r = 0;
        int rt = 0;

        for (int i = 0; i < i1; i++) {

            int t = 0;
            boolean[] s = new boolean[i1];
            for (int j = 0; j < 5; j++) {
                for (int k = 0; k < i1; k++) {
                    if (i2[i][j] == i2[k][j]) {
                        s[k] = true;
                    }
                }
            }

            for (boolean a: s) {
                if (a) {
                    t++;
                }
            }
            if (t > rt) {
                r = i;
                rt = t;
            }
        }
        return r + 1;
    }

    public static void main(String[] args){

        Scanner in = new Scanner(System.in);
        int input1 = in.nextInt();

        int [][] input2 = new int[input1][input1];
        for (int i = 0; i < input1; i++) {
            for (int j = 0; j < 5; j++) {
                input2[i][j] = in.nextInt();
            }
        }
        System.out.println(new Main().solution(input1, input2));
    }
}

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

런타임 에러가 발생하는 이유는 input2 배열의 크기가 잘못 설정된 것 같습니다. 현재 코드는 2차원 배열 input2의 크기를 [n][n]으로 잡고 있지만, 입력 데이터 포맷에 따라 각 행은 항상 5개의 입력만 받기 때문에 배열의 크기를 [n][5]로 설정해야 합니다. 이렇게 해야 각 학생의 학년도별 클래스 정보를 정확히 입력받을 수 있습니다.

이와 관련하여 검토할 수 있는 기존 질문들로 도움이 될 만한 유사한 질문을 몇 가지 소개해드리겠습니다:

  1. “runtime error” - 배열의 크기를 잘못 설정하여 런타임 에러가 발생하는 경우를 다룬 질문입니다.
  2. “질문드립니다.” - 이 문제에서 int[][] arr=newint[n+1][6];에 대해 설명하는 내용이 있으니 참고하시면 좋겠습니다.
  3. “런타임 에러” - 마찬가지로 인덱스 문제로 인해 런타임 에러가 발생할 때의 해결책을 제공합니다.

종합하여, 아래 코드를 참고해주세요:

import java.util.*;

public class Main {

    private int solution (int i1, int[][] i2) {

        int r = 0;
        int rt = 0;

        for (int i = 0; i < i1; i++) {

            int t = 0;
            boolean[] s = new boolean[i1];
            for (int j = 0; j < 5; j++) {
                for (int k = 0; k < i1; k++) {
                    if (i2[i][j] == i2[k][j]) {
                        s[k] = true;
                    }
                }
            }

            for (boolean a: s) {
                if (a) {
                    t++;
                }
            }
            if (t > rt) {
                r = i;
                rt = t;
            }
        }
        return r + 1;
    }

    public static void main(String[] args){

        Scanner in = new Scanner(System.in);
        int input1 = in.nextInt();

        // Corrected the array size
        int [][] input2 = new int[input1][5];
        for (int i = 0; i < input1; i++) {
            for (int j = 0; j < 5; j++) {
                input2[i][j] = in.nextInt();
            }
        }
        System.out.println(new Main().solution(input1, input2));
    }
}

이 코드에서는 input2 배열을 변환하여 문제를 해결하도록 구성하였습니다. 추가적인 질문이 있으시다면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

왕연성님의 프로필 이미지
왕연성

작성한 질문수

질문하기