bracket2 질문입니다

  • BueVonHon
    BueVonHon

    문제를 푸는 중에 이해가지 않는부분이 있어 질문남깁니다

    당연히 책에 나온 소스코드로는 통과가 되는데 요즘 제가 배운 문법내용을 적용하여 코드를 조금 더 깔끔하게 적어 제출하니 오답으로 처리됩니다.

    아무래도 문법상에서 맞지 않는 부분이 있어 그런 것 같은데, 아무래도 모르겠어 이렇게 글도 쓰면서 도움을 구하고자 합니다

    /**
     * author: BueVonHun
     * More Info: https://github.com/Bue-von-hon
    **/
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <list>
    #include <queue>
    #include <stack>
    #include <cstring>
    
    using namespace std;
    #define fast_cin() ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    #define endl '\n'
    
    bool check(const string& s) {
        stack<char> st;
        const string open("({["), close(")}]");
        for (char a: s) {
            if (open.find(a) != -1) {st.push(a);}
            else {
                if (st.empty()) {return false;}
                if (open.find(st.top()) != close.find(a)) {return false;}
                st.pop();
            }
        }
    
        return st.empty();
    }
    
    int main(void) {
        fast_cin();
        int test_case;
        cin >> test_case;
        for (int i = 0; i < test_case; i++) {
            string s;
            cin >> s;
            if (check(s)) cout << "Yes" << endl;
            else cout << "No" << endl;
        }
    
        return 0;
    }
    

    4년 전
1개의 댓글이 있습니다.
  • BueVonHon
    BueVonHon

    일주일간 질문과답변게시판에서 여러 TC를 참고하여 결국 오류를 잡았습니다

    진짜 문법문제였습니다
    출력에서 Yes가 아니라 YES를 출력해야 맞습니다(전부 대문자)
    덕분에 온갖 TC를 돌려볼 봤고, 저와 같은 문제를 겪은 분은 없으신 것 같아 기록차원에서 댓글 남깁니다


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