BRACKETS2 오답 질문입니다.

  • devhackin
    devhackin

    안녕하세요. 문제를 풀다 답이 안나와서 힌트라도 얻을 수 있을까해서 질문드립니다.
    아래 코드를 답안제출하면 오답이라고 나오는데 여러 번 테스트케이스를 넣고 실행을 해도 정답이 나오지 않아서 답답합니다.

    알고리즘

    입력문자열을 뒤에서부터 닫기 브라켓들을 스택에 넣고,
    열기 브라켓들이 보이면 스택에서 꺼내서 비교하는 방식으로 만들었습니다.

    테스트 해본 케이스

    • {
    • }
    • []
    • ((()))
    • ({})
    • ([})

    코드에 문제가 있는지 봐주시면 감사하겠습니다.

    BRACKETS2

    brackets = [('(', ')'), ('{', '}'), ('[', ']')]
    result = ''
    testCase = input()
    if 1 <= testCase <= 100:
        for _ in range(testCase):
            checkBracket = []
            inputList = list(raw_input())
            for x in range(len(inputList)):
                for i in range(len(brackets)):
                    for j in brackets[i]:
                        if inputList[x] == j:
                            checkBracket.append([i, brackets[i].index(j)])
    
            if checkBracket[-1][1] == 0 or len(checkBracket) == 1 or len(checkBracket) % 2 != 0:
                result = 'NO'
            else:
                rBrackets = []
                lBrackets = []
                for t in range(len(checkBracket)-1, -1, -1):
                    if checkBracket[t][1] == 1:
                        rBrackets.append(checkBracket[t])
                    else:
                        if len(rBrackets) != 0:
                            if rBrackets[-1][0] == checkBracket[t][0]:
                                del rBrackets[-1]
                            else:
                                lBrackets.append(checkBracket[t])
                        else:
                            result = 'NO'
                            break
    
            if result != 'NO':
                if len(rBrackets) == 0 and len(lBrackets) == 0:
                    print 'YES'
                else:
                    print 'NO'
            else:
                print result
    

    9년 전
2개의 댓글이 있습니다.
  • zeroion
    zeroion

    result 가 리셋이 안되는거 같네요~


    9년 전 link
  • devhackin
    devhackin

    zeroion// 엄청납니다. 리셋되게 수정하니까 정답이 됐네요~ 감사합니다.


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