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
devhackin
안녕하세요. 문제를 풀다 답이 안나와서 힌트라도 얻을 수 있을까해서 질문드립니다.
아래 코드를 답안제출하면 오답이라고 나오는데 여러 번 테스트케이스를 넣고 실행을 해도 정답이 나오지 않아서 답답합니다.
알고리즘
입력문자열을 뒤에서부터 닫기 브라켓들을 스택에 넣고,
열기 브라켓들이 보이면 스택에서 꺼내서 비교하는 방식으로 만들었습니다.
테스트 해본 케이스
코드에 문제가 있는지 봐주시면 감사하겠습니다.
[[problem:BRACKETS2]]
10년 전