초심자 문제에 BRACKET2 문제 왜 오답인지 모르겠습니다. 도와주세요

  • bum4985
    bum4985

    모든 조건을 다보고 왜 오답이 나오는지 확인하였으나 도무지 왜 오답인지 모르겠습니다. 부탁드립니다.

    #include
    #include

    char a[10000];
    char b[10000];
    int i=0;
    
    int j=0;

    int correct(){

    for(i=0;i<strlen(a);i++)
    {
    
        if(a[i]=='('||a[i]=='{'||a[i]=='[')
        {
            b[j]=a[i];
            j++;
        }
        if(a[i]==')'||a[i]=='}'||a[i]==']')
        {
            j--;
            if(b[j]=='('&&a[i]!=')')
            {
            return 0;
            }
            if(b[j]=='{'&&a[i]!='}')
            {
            return 0;
            }
            if(b[j]=='['&&a[i]!=']')
            {
            return 0;
            }
    
        }
    }

    if(j==0){
    return 1;
    }
    else{
    return 0;
    }

    }

    int main(void)
    {
    int count=0;

    int cor;
    
    scanf("%d",&count);
    if(count<0 && count>100)
        return 0;
    //printf("%d",count);
    while(count--){
    
            scanf("%s",a);
            cor=correct();
            if(cor==1)
            {
            printf("YES");
            printf("\n");
            }
            else
            {
            printf("NO");
            printf("\n");
            }
    
    
    }

    }


    10년 전
1개의 댓글이 있습니다.
  • astein
    astein

    ')'로 시작하는 문자열을 테스트 해 보세요 :)
    [ 위의 문제를 수정하여도 위의 프로그램에는 다른 문제점이 있습니다. 직접 찾아보세요 :) ]


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