BRACKETS2(짝이맞는괄호-스택) 에 대해 질문드립니다.

  • spring
    spring

    중복 질문 올려서 죄송합니다
    너무 궁금한데 아직도 해결책을 못찾아서 다시 올려봅니다.. ㅠ_ㅠ
    의심가는 부분이 있으면 찝어서 질문하는데
    생각한 예제를 넣었을 때는 모두 맞는 답이 나와서
    아래 코드를 제출했을 때 왜 런타임 오류가 나오는지 모르겠습니다.

    (C++ 소스 코드)
    
    #include <stdio.h>
    #include <string.h>
    
    char stack[1001]={0,};
    int top=-1;
    int flag=0;
    
    void push(char n)
    {
        top++;
        stack[top]=n;
    }
    
    char pop()
    {
        top--;
        if(top<-1)
            return 'X';
        else
            return stack[top+1];
    }
    
    int main()
    {
        char pair[101]={0,};
        int testCase;
        scanf("%d",&testCase);
    
        for(int t=0;t<testCase;t++)
        {
        scanf("%s",pair);
    
        for(int i=0;i<strlen(pair);i++)
            if(pair[i]=='(' || pair[i]=='{' || pair[i]=='[' )
                push(pair[i]);
            else
            {
                if(pair[i]==')')
                    if(pop()!='(')
                    {
                        flag=1;
                        break;
                    }
    
                if(pair[i]=='}')
                    if(pop()!='{')
                    {
                        flag=1;
                        break;
                    }
                if(pair[i]==']')
                    if(pop()!='[')
                    {
                        flag=1;
                        break;
                    }
    
            }
    
            if(!flag && top==-1)
                printf("YES\n");
            else
                printf("NO\n");
    
            top=-1;
            flag=0;
            memset(pair,0,sizeof(pair));
        }
    
        return 0;
    }
    

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

    stack이랑 pair 길이 문제 아닐까요?

    The length of the string will not exceed 10,000.


    8년 전 link
  • spring
    spring

    너무 감사합니다 ㅠㅠ pair를 까먹고 있었네요


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