보글 게임 문제 질문드립니다.

  • tjtjdgur34
    tjtjdgur34

    문제 질문드립니다.
    본 문제에 해당하는 요건을 만족했다고 생각했는데 오답으로 자꾸 표시가 됩니다. 도움 부탁드립니다.

    import java.util.Scanner;
    
    public class R {
        static char[][] arr = new char[5][5];
        static int[] rotX = new int[]{-1, -1, -1, 0, 1, 1, 1, 0};   
        static int[] rotY = new int[]{1, 0, -1, -1, -1, 0, 1, 1};   
    
        private static boolean hasWord(int i, int j, String word) {
            if(i < 0 || i > 4 || j < 0 || j > 4)
                return false;
    
            if(arr[i][j] != word.charAt(0))
                return false;
    
            if(word.length() == 1)
                return true;
    
            for(int k = 0; k < 8; k++){
                int nextX = i + rotX[k], nextY = j + rotY[k];
                hasWord(nextX, nextY, word.substring(1));
                return true;
            }
            return false;
        }
    
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int circular = scan.nextInt();
            scan.nextLine();
    
            for(int r = 0; r < circular; r++) {
                for(int i = 0; i < 5; i++) {
                    String alphabet = scan.nextLine();
                    char[] a = new char[5];
                    a = alphabet.toCharArray();     //***
                    for(int j = 0; j < 5; j++) {
                        arr[i][j] = a[j];
                    }
                }
    
                int number = scan.nextInt();
                String[] b = new String[number];
                scan.nextLine();
    
                for(int i = 0; i < number; i++) {
                    b[i] = scan.nextLine();
                }
    
                for(int k = 0; k < number; k++) {
                    String word = b[k];
    
                    int count = 0;
    
                    for(int i = 0; i < arr.length; i++) {
                        for(int j = 0; j < arr[0].length; j++) {
                            if(hasWord(i, j, word))
                                count++;
                        }
                    }
    
                    if(count == 0)
                        System.out.println(word + " NO");
                    else
                        System.out.println(word + " YES");
                }
            }           
        }
    
    }
    

    7년 전
2개의 댓글이 있습니다.
  • Corea
    Corea

    hasWord 함수에서 재귀 호출을 하는데, 그 결과와 무관하게 항상 true를 리턴하네요.


    7년 전 link
  • tjtjdgur34
    tjtjdgur34

    답변 감사드립니다!!


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