stack의 대표적인 유형 괄호문제
pop하기 전에 항상 미리 stack이 있는지 체크해야하는데
까먹어서 자꾸 틀렸던 !!!
while문을 돌려서 ans != 0 이 되는 시점에서 반복문을 멈춰도 될 것 같다
T = int(input())
for test_case in range(1, T+1):
txt = list(input())
stack = []
ans = 0
for i in txt:
# (나 {가 들어오면 stack에 넣기
if i == '(' or i == '{':
stack.append(i)
# )가 들어오고 스택의 마지막이 (면 pop
if i == ')':
if stack and stack[-1] == '(':
stack.pop()
# 아니면 ans +1
else:
ans += 1
# }가 들어오고 스택의 마지막이 {면 pop
if i == '}' :
if stack and stack[-1] == '{':
stack.pop()
# 아니면 ans += 1
else:
ans += 1
# 스택에 남은게 없고, ans가 0이면 1출력
if len(stack) == 0 and ans == 0:
print(f'#{test_case} 1')
else:
print(f'#{test_case} 0')
'SWEA' 카테고리의 다른 글
[SWEA] 4874 Forth - python (0) | 2023.02.19 |
---|---|
[SWEA] 4873 반복 문자 지우기 -python (0) | 2023.02.18 |
[SWEA] 4871 그래프 경로 -python (0) | 2023.02.14 |
[SWEA] 1974 스도쿠 검증 -python (0) | 2023.02.13 |
[SWEA] 1215 [S/W 문제해결 기본] 3일차 - 회문1 -python (0) | 2023.02.13 |