BOGGLE 문제 오답관련 문의

  • bum4985
    bum4985
    #include<stdio.h>
    
    int testcount;
    char arr[7][7];
    int cache[105][105];
    int cache2[105][105];
    //int n;
    
    char word[20];
    
    int main(void){
    
        //freopen("c:\\input.txt", "r", stdin);
        scanf("%d", &testcount);
        gets(word);
    
    
    
        while (testcount--){
    
            int c;
    
            //scanf("%d", &n);
            for (int i = 1; i < 6; i++){
                for (int j = 1; j < 6; j++){
                    scanf("%c", &arr[i][j]);
                }
                gets(word);
            }
    
            scanf("%d", &c);
            while (c--){
                char test[11];
                int result = 1;
    
                gets(word);
    
                for (int i = 0; i < 7; i++){
                    for (int j = 0; j < 7; j++){
                        cache[i][j] = -1;
                        cache2[i][j] = -1;
    
                    }
    
                }
    
                scanf("%s", test);
                //printf("%s", arr);
    
                for (int o = 0; test[o] != '\0'; o++){
                    //printf("%c", arr[o]);
                    int stt = 0;
    
                    if (o % 2 == 0){
    
                        for (int i = 1; i < 6; i++){
                            for (int j = 1; j < 6; j++){
    
                                if (test[o] == arr[i][j]){
                                    if (cache[i - 1][j - 1] == o - 1 || cache[i - 1][j] == o - 1 || cache[i - 1][j + 1] == o - 1 || cache[i][j - 1] == o - 1 ||
                                        cache[i][j + 1] == o - 1 || cache[i + 1][j - 1] == o - 1 || cache[i + 1][j] == o - 1 || cache[i + 1][j + 1] == o - 1)
                                    {
                                        cache2[i][j] = o;
                                        stt = 1;
                                    }
    
                                }
    
                            }
                        }
    
                    }
                    else{
                        for (int i = 1; i < 6; i++){
                            for (int j = 1; j < 6; j++){
    
                                if (test[o] == arr[i][j]){
                                    if (cache2[i - 1][j - 1] == o - 1 || cache2[i - 1][j] == o - 1 || cache2[i - 1][j + 1] == o - 1 || cache2[i][j - 1] == o - 1 ||
                                        cache2[i][j + 1] == o - 1 || cache2[i + 1][j - 1] == o - 1 || cache2[i + 1][j] == o - 1 || cache2[i + 1][j + 1] == o - 1)
                                    {
                                        cache[i][j] = o;
                                        stt = 1;
                                    }
    
                                }
    
                            }
                        }
    
    
    
                    }
    
    
                    if (stt != 1){ result = 0; break; }
                }
                printf("%s ", test);
                if (result == 1) { printf("YES\n"); }
                else { printf("NO\n"); }
    
            }
        }
    }
    

    안녕하세요.
    제가 문의드릴 내용은 제가 만들수 있는 모든 TESTCASE는 다 통과하는데 오답이라고 나와서 문의드립니다.
    원래 오답이라고 나오면 자신이 TESTCASE를 만들어서 해결해야하지만 도저히 모르겠습니다. 어떤 테스트 케이스에서 통과를 못했는지 던져주시면 해결하겠습니다.
    NNNNN
    NEEEN
    NEYEN
    NEEEN
    NSNNN
    1
    YES
    위 테스트케이스도 통과합니다.
    감사합니다.


    9년 전
3개의 댓글이 있습니다.
  • JongMan
    JongMan

    출력 양식을 다시 읽어 주세요.


    9년 전 link
  • bum4985
    bum4985

    JongMan 님 소스를 수정하여 다시 올렸습니다. 그럼에도 오답이 되네요.
    답변 꼭 부탁드립니다. 어떤 테스트케이스가 통과하지 않을까요?


    9년 전 link
  • JongMan
    JongMan

    문자 단위 입력을 받고 gets()로 라인 피드를 입력받는 방식은 추천하지 않습니다. 아마 한 케이스가 끝나고 gets(word)를 안 해서 나오는 오답 같은데, 그냥 scanf("%s")로 모든 문자열을 입력받으시길 추천드립니다.


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