BRACKETS2 오답 : 도움 요청드립니다

  • aloha
    aloha

    하기 코드로 안되는 TC를 아직 확인하지 못하고있습니다.
    어떤 경우가 안되는걸까요?

    // Name        : brackets2.cpp
    
    #include <iostream>
    #include <string.h>
    #define MAX_LEN 10000
    using namespace std;
    
    int cnt = 0;
    char** array = NULL;
    
    void getInput() {
        cin >> cnt;
        array = new char*[cnt];
        for (int i = 0; i < cnt; i++) {
            array[i] = new char[MAX_LEN];
            cin >> array[i];
        }
    }
    
    bool checkInner(const char* buf, int& startPos){
        char target = buf[startPos];
        bool ret = false;
        target = (target == '(' ? ')' : target == '{' ? '}' : target == '[' ? ']' : 0);
        if(target <= 0){
            return ret;
        }
    
        int len = strlen(buf);
        for(startPos++; startPos<len; startPos++){
            if(buf[startPos] == target){
                return true;
                }else{
                    ret =  checkInner(buf, startPos);
                    if(!ret){
                        break;
                    }
            }
        }
        return ret;
    }
    
    void doIt() {
        for (int i = 0; i < cnt; i++) {
            int len = strlen(array[i]);
            bool ret = false;
            for(int j=0; j<len; j++){
                ret = checkInner((const char*)array[i], j);
                if(!ret){
                    break;
                }
            }
            cout << (ret ? "YES" : "NO") << endl;
        }
    }
    
    int main() {
        getInput();
        doIt();
        return 0;
    }
    

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

    입력의 마지막이 ()로 끝나면 무조건 YES를 출력하겠네요...


    10년 전 link
  • aloha
    aloha

    좋은지적 감사드립니다.
    그런데 해당부분 수정하였는데도 오답나오니 답답하네요


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