-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
11. 임시반장 정하기 런타임 오류 피드백 부탁드립니다
24.01.16 14:23 작성 24.01.16 14:35 수정 조회수 140
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)); } }
답변을 작성해보세요.
0
인프런 AI 인턴
2024.01.18
안녕하세요, 인프런 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
발생할 수 있기 때문입니다. 수정 후에도 문제가 지속된다면 다른 부분에서도 유사한 인덱스 접근 오류가 없는지 다시 확인해 보시기 바랍니다.
답변 1