BRACKETS2 오답 원인을 모르겠습니다ㅠㅠ

  • AlgoPigeon
    AlgoPigeon

    STL stack 을 이용했습니다
    [ 또는 ] 만 있는 경우에도 잘 동작하는 것을 확인했습니다
    어떤 케이스에서 오답이 발생하는지 궁금합니다ㅠ

    #include <iostream>
    #include <stack>
    #include <string>
    
    using namespace std;
    stack<char> list;
    
    bool solve(string& s) {
        for (int i = 0; s[i] != '\0'; i++) {
            // (,{,[ 이라면 stack에 push
            if ((s[i] == '(') || (s[i] == '{') || (s[i] == '[')) {
                list.push(s[i]);
                continue;
            }
    
            // ) 이라면 stack top에 ( 있어야됨
            else if (s[i] == ')')  {
                if (list.empty() == true)
                    return false;
                if (list.top() == '(')
                    list.pop();
                else return false;
    
            }
    
            // } 이라면 stack top에 { 있어야됨
            else if (s[i] == '}')  {
                if (list.empty() == true)
                    return false;
                if (list.top() == '{')
                    list.pop();
                else return false;
    
            }
    
            // ] 이라면 stack top에 [ 있어야됨
            else if (s[i] == ']')  {
                if (list.empty() == true) 
                    return false;
                if (list.top() == '[')
                    list.pop();
                else return false;
    
            }
            else return false; // (){}[]가 아니면 false
    
        }
        if (list.empty() == true)
            return true;
        else return false;
    }
    
    int main(void) {
        int T;
    
        cin >> T;
    
        while (T--) {
            string input;
            cin >> input;
    
            if (solve(input) == true)
                cout << "YES" << endl;
            else cout << "NO" << endl;
    
        }
    }
    

    8년 전
3개의 댓글이 있습니다.
  • Toivoa
    Toivoa

    문제에 있는 예제가 제대로 안나올 것 같은데 잘 나오나요?


    8년 전 link
  • AlgoPigeon
    AlgoPigeon

    Toivoa// 어라? 잘되는 걸 확인했었는데 약간 고치고 나니까 또 안되네요ㅜㅜ 지적 감사합니다 다시 살펴봐야겠어요


    8년 전 link
  • AlgoPigeon
    AlgoPigeon

    고쳐서 정답 받았습니다ㅎㅎ stack을 전역변수로 두었는데, stack에 이전 케이스의 데이터가 남아있던것이 문제였어요


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