BRAKETS2 문제 오답인까닭을 모르겠습니다.

  • ydk1130
    ydk1130

    제가 임의로 넣어본예제및 출력예제 입력예제를 넣어봤을 경우 정확한 값이 나옵니다. 허나 답은 오답..... 왜이런거죠?

    #include <stdio.h>
    #include <string.h>
    //{)}(}}
    int main(void)
    {
        int T;
        int length;
        int top=-1;
        int i=0;
        int flag=1;
        char input[10000];
        char stack[5000];
        scanf("%d",&T);
        while(T>0)
        {
            scanf("%s",input);
            length = strlen(input);
            while(i<length&&flag==1&&top>-2&&top<4999)
            {
                if(input[i]=='{'||input[i]=='('||input[i]=='[')
                {
                    top++;
                    stack[top]=input[i];
                }
                else
                {
                    if(stack[top]=='{'&&input[i]=='}')
                    {
                        top--;
                    }
                    else if(stack[top]=='('&&input[i]==')')
                    {
                        top--;
                    }
                    else if(stack[top]=='['&&input[i]==']')
                    {
                        top--;
                    }
                    else
                    {
                        flag=0;
                    }
                }
                i++;
            }
            if(flag==0)
            {
                printf("NO\n");
            }
            else
            {
                printf("YES\n");
            }
            i=0;
            flag=1;
            top=-1;
            T--;
        }
        return 0;
    }
    

    8년 전
2개의 댓글이 있습니다.
  • Oltre
    Oltre

    아래는 제가 예전에 풀었을 때 발생했던 오답 원인 들입니다.
    직접 돌려볼 환경이 아니라서 제가 경험했던 것들만 남기고 갑니다.

    • 1. 열린괄호만 있을 경우 닫힌 괄호만 있을 경우.
    • 2. 열린 괄호들과 닫힌 괄호들이 짝은 이루지만 닫힌 괄호의 갯수가 맞지 않은 경우.

    8년 전 link
  • ydk1130
    ydk1130

    Oltre님 정말 감사합니다!!! 열린괄호만 있을 경우 YES가 나왔었네요 ㅠㅠ top이 -1로 끝나지 않으면 NO로 만드는 방법을 추가해 정답을 받았습니다 감사합니다!


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