1. 문제와 예제
닫혀있는 괄호가 나왔을 때 열려있는 괄호를 뒤에서부터 찾게 되므로 stack 구조를 활용하면 되겠다.
2. 전체 코드
import sys
input = sys.stdin.readline
while True:
sen = input().rstrip() # 문자열
stack = []
isBal = True # 균형을 이루고 있는지 여부
if (sen == '.'): # 입력 종료조건
break
for s in sen:
if (s == '(' or s == '['):
stack.append(s)
elif s == ')':
if (len(stack) != 0 and stack[-1] == '('):
stack.pop()
else:
isBal = False
break
elif s == ']':
if (len(stack) != 0 and stack[-1] == '['):
stack.pop()
else:
isBal = False
break
# else는 영문 알파벳, 공백일 때다
if (len(stack) != 0 or not isBal):
print("no")
else:
print("yes")
3. 풀이
예제를 써보면서 yes, no가 나오는 규칙을 각각 생각해보고 추가로 다른 경우도 있는지 체크해주면 코드를 완성할 수 있다.
'백준' 카테고리의 다른 글
[백준] 10773번 파이썬 (제로) (0) | 2024.03.20 |
---|---|
[백준] 9012번 파이썬 (괄호) (0) | 2024.03.20 |
[백준] 2839번 파이썬 (설탕 배달) (0) | 2024.03.20 |
[백준] 2164번 파이썬 (카드2) (0) | 2024.03.20 |
[백준] 1920번 파이썬 (수 찾기) (0) | 2024.03.20 |