BOARDCOVER 문제 런타임오류. ndw 로컬에서 돌렸을 때 Sample case는 이상없이 작동하였습니다. 하지만 사이트에서 제출하였을 때 런타임 오류가 바로 뜹니다.. import java.util.Scanner; public class BOARDCOVER { static int row; static int yol; static char[][] matrix; static int dot_count; static int value; static int [] real_value; public static void main(String[] args) { // TODO Auto-generated method stub Scanner a = new Scanner(System.in); int test_case; int x1 = 0, y1 = 0; test_case = a.nextInt(); real_value=new int [test_case]; for (int i = 0; i < test_case; i++) { row = a.nextInt(); yol = a.nextInt(); matrix = new char[row][yol]; for (int k = 0; k < row; k++) { String line = a.next(); int z = 0; for (int h = 0; h < yol; h++) { if (z < yol) { matrix[k][h] = line.charAt(z); z++; } } } for (int j = 0; j < row; j++) { for (int k = 0; k < yol; k++) { if (matrix[j][k] == '.') { dot_count++; } } } real_value[i]=find_count(dot_count,row,yol); value=0; dot_count=0; } for(int ab=0;ab<test_case;ab++){ System.out.println(real_value[ab]); } } public static int find_count(int d_c,int r,int y) { int x1 = -1, y1 = -1; if (d_c % 3 != 0) { return value; } if(d_c>50){ return value; } if(r>20 || y>20 || r<1 || y<1 ){ return value; } if (d_c == 0) { value = value + 1; return value; } for (int i = 0; i < row; i++) { for (int j = 0; j < yol; j++) { if (matrix[i][j] == '.') { x1 = i; y1 = j; break; } } if (x1 != -1) break; } if(matrix[x1][y1+1]=='.' && matrix[x1+1][y1]=='.'){ matrix[x1][y1]='#'; matrix[x1][y1+1]='#'; matrix[x1+1][y1]='#'; d_c=d_c-3; find_count(d_c,r,y); matrix[x1][y1]='.'; matrix[x1][y1+1]='.'; matrix[x1+1][y1]='.'; d_c=d_c+3; } if(matrix[x1+1][y1]=='.' && matrix[x1+1][y1+1]=='.'){ matrix[x1][y1]='#'; matrix[x1+1][y1]='#'; matrix[x1+1][y1+1]='#'; d_c=d_c-3; find_count(d_c,r,y); matrix[x1][y1]='.'; matrix[x1+1][y1]='.'; matrix[x1+1][y1+1]='.'; d_c=d_c+3; } if(matrix[x1][y1+1]=='.' && matrix[x1+1][y1+1]=='.'){ matrix[x1][y1]='#'; matrix[x1][y1+1]='#'; matrix[x1+1][y1+1]='#'; d_c=d_c-3; find_count(d_c,r,y); matrix[x1][y1]='.'; matrix[x1][y1+1]='.'; matrix[x1+1][y1+1]='.'; d_c=d_c+3; } if(matrix[x1+1][y1]=='.' && matrix[x1+1][y1-1]=='.'){ matrix[x1][y1]='#'; matrix[x1+1][y1]='#'; matrix[x1+1][y1-1]='#'; d_c=d_c-3; find_count(d_c,r,y); matrix[x1][y1]='.'; matrix[x1+1][y1]='.'; matrix[x1+1][y1-1]='.'; d_c=d_c+3; } return value; } } 제 코드는 이러한데, 혹시 무슨 에러인지 알 수 있을까요? 바쁘신데 읽어봐주셔서 감사드립니다 7년 전
1개의 댓글이 있습니다. seico75 x1, y1 이 0~r, 0~y 의 범위를 넘어가면서 check 되는 부분이 있을 것 같습니다. x1+1, y1-1 등 재귀의 깊이가 깊어지면서 에러가 날 수 있을 것 같습니다. 결국 5 * 10 의 .만 있는 테스트 값을 넣어보면 어떨까요? 7년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
ndw
로컬에서 돌렸을 때 Sample case는 이상없이 작동하였습니다.
하지만 사이트에서 제출하였을 때 런타임 오류가 바로 뜹니다..
import java.util.Scanner;
public class BOARDCOVER {
}
제 코드는 이러한데, 혹시 무슨 에러인지 알 수 있을까요?
바쁘신데 읽어봐주셔서 감사드립니다
7년 전