Tiny Bunny
본문 바로가기
Algorithm/Python

[SWEA #12396] 스택1_괄호검사

by nowag 2024. 2. 7.

문제

주어진 입력에서 괄호 {}, ()가 제대로 짝을 이뤘는지 검사하는 프로그램을 만드시오.

예를 들어 {( )}는 제대로 된 짝이지만, {( })는 제대로 된 짝이 아니다. 입력은 한 줄의 파이썬 코드일수도 있고, 괄호만 주어질 수도 있다.

정상적으로 짝을 이룬 경우 1, 그렇지 않으면 0을 출력한다.

print(‘{‘) 같은 경우는 입력으로 주어지지 않으므로 고려하지 않아도 된다. 

 

입력

첫 줄에 테스트 케이스 개수 T가 주어진다.  1≤T≤50

다음 줄부터 테스트 케이스 별로 온전한 형태이거나 괄호만 남긴 한 줄의 코드가 주어진다.

 

출력

각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.

 

내가 쓴 코드

T = int(input())
for t in range(T):
    arr = input()

    stack = []      # 빈 스택
    res = 1         # 결과 값
    for a in arr:
        if a == '(' or a == '{':
            stack.append(a)
        elif a == ')' or a == '}':
            if not stack:
                print('stack이 비어있습니다.')
                res = 0
                break
            bef = stack.pop()

            if a == ')' and bef != '(':
                res = 0
                break
            elif a == '}' and bef != '{':
                res = 0
                break

    if stack:  	# for 문이 끝난 뒤 stack 은 비어있어야 함
        res = 0

    print(f'#{t+1} {res}')

 

출력 결과

#1 1

#2 1

#3 0

728x90
반응형

'Algorithm > Python' 카테고리의 다른 글

[BOJ #11720] 숫자의 합  (1) 2024.02.09
[BOJ #2798] 블랙잭  (3) 2024.02.09
[BOJ #10798] 세로읽기  (4) 2024.02.07
[SWEA #12399] 스택1_반복문자_지우기  (1) 2024.02.07
[SWEA #11573] 스택_제로  (2) 2024.02.07