작성
·
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
발생할 수 있기 때문입니다. 수정 후에도 문제가 지속된다면 다른 부분에서도 유사한 인덱스 접근 오류가 없는지 다시 확인해 보시기 바랍니다.