SWEA

[SWEA] 4866 괄호검사 - python

peach_h 2023. 2. 18. 23:32

SW Expert Academy

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

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')