BOGGLE 문제 푸는데 RTE가 나옵니다. sdrlurker local에서 예시와 나온 것과 똑같이 입력하면 답이 맞게 나오는데 여기서 문제를 제출하니 런타임 오류 RTE가 나옵니다. ㅠㅠ; 그 이유를 알고 싶습니다. import java.util.Scanner; public class Main { static int location; private static int answer2(char[][] pans, String input, int x, int y) { int ret = 0; //System.out.println("x=" + x +", y=" + y + ", location=" + location); if(location<input.length()-1 && pans[y][x] == input.charAt(location+1)) { ++location; //System.out.println(input.charAt(location)); if(x>0 && y>0) ret = answer2(pans,input,x-1,y-1); if(x<pans.length-1 && y>0) ret = answer2(pans,input,x+1,y-1); if(x<pans.length-1 && y<pans[x].length-1) ret = answer2(pans,input,x+1,y+1); if(x>0 && y<pans[x].length) ret = answer2(pans,input,x-1,y+1); if(x>0) ret = answer2(pans,input,x-1,y); if(x<pans.length-1) ret = answer2(pans,input,x+1,y); if(y>0) ret = answer2(pans,input,x,y-1); if(y<pans[x].length-1) ret = answer2(pans,input,x,y+1); } return location; } private static int answer(char[][] pans, String input) { int ret = -1; location = 0; for(int y=0;y<pans.length;y++) { for(int x=0;x<pans[y].length;x++) { if(pans[y][x] == input.charAt(0)) { //System.out.println(pans.length + " " + pans[x].length); if(x>0 && y>0) ret = answer2(pans,input,x-1,y-1); if(ret == input.length()-1) return ret; location = 0; if(x<pans.length-1 && y>0) ret = answer2(pans,input,x+1,y-1); if(ret == input.length()-1) return ret; location = 0; if(x<pans.length-1 && y<pans[x].length-1) ret = answer2(pans,input,x+1,y+1); if(ret == input.length()-1) return ret; location = 0; if(x>0 && y<pans[x].length-1) ret = answer2(pans,input,x-1,y+1); if(ret == input.length()-1) return ret; location = 0; if(x>0) ret = answer2(pans,input,x-1,y); if(ret == input.length()-1) return ret; location = 0; if(x<pans.length-1) ret = answer2(pans,input,x+1,y); if(ret == input.length()-1) return ret; location = 0; if(y>0) ret = answer2(pans,input,x,y-1); if(ret == input.length()-1) return ret; location = 0; if(y<pans[x].length-1) ret = answer2(pans,input,x,y+1); if(ret == input.length()-1) return ret; location = 0; } } } return ret; } public static void main(String args[]) { Scanner sc = new Scanner(System.in); int cases = sc.nextInt(); for(int num=0;num<cases;num++) { String lsStr[] = new String[5]; for(int i=0;i<5;i++) lsStr[i] = sc.next(); char pans[][] = new char[5][]; for(int i=0;i<lsStr.length;i++) { pans[i] = lsStr[i].toCharArray(); } int words = sc.nextInt(); String inputs[] = new String[words]; for(int i=0;i<inputs.length;i++) inputs[i] = sc.next(); for(int i=0;i<inputs.length;i++) { if(answer(pans, inputs[i])==inputs[i].length()-1) System.out.println(inputs[i] + " YES"); else System.out.println(inputs[i] + " NO"); } } } } 11년 전
2개의 댓글이 있습니다. kws4679 어떤 RTE 인지 모르겠지만...아마도 메모리 액세스 문제인경우가 많겠지만요.. 제경우에는 xcode 로 짰는데 잘되었다가 g++ 로 짜면 메모리 액세스 문제가 나는경우도 있었습니다. 혹시 이클립스같은 툴을 쓰신다면 한번 콘솔로 해보심이... 11년 전 link JongMan 커다란 입력을 여러개 생성해서 넣어보세요~ 11년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
sdrlurker
local에서 예시와 나온 것과 똑같이 입력하면 답이 맞게 나오는데
여기서 문제를 제출하니 런타임 오류 RTE가 나옵니다. ㅠㅠ;
그 이유를 알고 싶습니다.
11년 전