문제
주어진 입력에서 괄호 {}, ()가 제대로 짝을 이뤘는지 검사하는 프로그램을 만드시오.
예를 들어 {( )}는 제대로 된 짝이지만, {( })는 제대로 된 짝이 아니다. 입력은 한 줄의 파이썬 코드일수도 있고, 괄호만 주어질 수도 있다.
정상적으로 짝을 이룬 경우 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 |