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

현이님의 프로필 이미지
현이

작성한 질문수

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

11. 임시반장정하기

11. 임시반장 정하기 런타임 오류 피드백 부탁드립니다

작성

·

205

·

수정됨

0

  • 비슷한 질문을 확인했는데, 제 경우에는 인덱스 범위를 맞게 설정한거 같고 인풋 아웃풋 결과도 문제가 없는거 같은데 채점 사이트에서만 런타임 오류라고 뜨네요 ㅠㅠ 왜그런지 봐주세요. 1학년부터 5학년까지라고 하셨지만 저는 5*5배열을 만들어서 해결하고 싶었습니다.아래 코드에서 어떻게 고치면 될까요??

  •  

    import java.util.*;
    
    public class Main {
        public int solution(int n,int[][] arr){
            int answer=0, max=Integer.MIN_VALUE;
            for(int i=0;i<n;i++){
                int cnt=0;
                for(int j=0;j<n;j++) {
                    for(int k =0;k<5;k++) {
                        if(arr[i][k] == arr[j][k]){
                            cnt++;
                            break;
                        }
                    }
                }
                if(max<cnt){
                    max=cnt;
                    answer= i+1;
                }
            }
            return answer;
        }
    
        public static void main(String[] args) {
            Main T = new Main();
            Scanner kb = new Scanner(System.in);
            int n = kb.nextInt();
            int [][] arr = new int[n][n];
            for(int i=0; i<n; i++) {
                for (int j = 0; j < 5; j++) {
                    arr[i][j] = kb.nextInt();
                }
            }
            System.out.print(T.solution(n,arr));
            }
    
    
    }
    

     

답변 1

0

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

님의 질문 관련하여 살펴본 바로는, arr 배열을 int[n][n]으로 선언한 부분에 문제가 있을 수 있습니다. 문제에서 요구하는 것은 학생들의 1학년부터 5학년까지의 정보 즉, 5개의 값에 대한 정보를 다루어야 하므로 arr 배열은 int[n][5]로 선언되어야 합니다.

따라서 int [][] arr = new int[n][n]; 부분을 int [][] arr = new int[n][5];로 수정하시면 런타임 오류를 해결할 수 있을 것입니다.

런타임 오류가 발생하는 이유는 배열의 크기가 잘못 설정되어 인덱스를 벗어나는 경우, 즉 ArrayIndexOutOfBoundsException 발생할 수 있기 때문입니다. 수정 후에도 문제가 지속된다면 다른 부분에서도 유사한 인덱스 접근 오류가 없는지 다시 확인해 보시기 바랍니다.

현이님의 프로필 이미지
현이

작성한 질문수

질문하기