BOGGLE 문제 푸는데 RTE가 나옵니다.

  • User Avatar
    sdrlurker

    local에서 예시와 나온 것과 똑같이 입력하면 답이 맞게 나오는데
    여기서 문제를 제출하니 런타임 오류 RTE가 나옵니다. ㅠㅠ;
    그 이유를 알고 싶습니다.


    ~~~java
    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 {
    ++location;
    //System.out.println(input.charAt(location));
    if(x>0 && y>0) ret = answer2(pans,input,x-1,y-1);
    if(x0) ret = answer2(pans,input,x+1,y-1);
    if(x if(x>0 && y if(x>0) ret = answer2(pans,input,x-1,y);
    if(x 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");
            }
    
        }
    }
    

    }
    ~~~


    13년 전
2개의 댓글이 있습니다.
  • User Avatar
    kws4679

    어떤 RTE 인지 모르겠지만...아마도 메모리 액세스 문제인경우가 많겠지만요.. 제경우에는 xcode 로 짰는데 잘되었다가 g++ 로 짜면 메모리 액세스 문제가 나는경우도 있었습니다. 혹시 이클립스같은 툴을 쓰신다면 한번 콘솔로 해보심이...


    13년 전 link
  • User Avatar
    JongMan

    커다란 입력을 여러개 생성해서 넣어보세요~


    13년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.