728x90
https://www.acmicpc.net/problem/4949
import sys
while True:
string = sys.stdin.readline().rstrip()
stack = []
if string == '.': #1
break
elif string == ' .': #2
print('yes')
else:
for char in string:
if char == '(' or char == '[': #3
stack.append(char)
elif char == ')': #4
if stack and stack[-1] == '(':
stack.pop()
else: #5
stack.append(char)
elif char == ']': #6
if stack and stack[-1] == '[':
stack.pop()
else:
stack.append(char)
if stack:
print('no')
else:
print('yes')
#1 : 반복문 탈출조건
#2 : 출력조건
#3 : 여는 괄호라면 stack에 추가
#4 : 소괄호 닫는 괄호일때 stack이 비어있지 않고 top이 짝이 맞는 여는 괄호라면 stack.pop() 실행
#5 : #4에서 걸리지 않는다면 stack이 비어있거나 stack[-1] ==')'인 경우인데 이 경우 짝이 맞지 않으므로 후에 len(stack) == 0을 위해 append해준다
#6 : #4, 5와 동일
9012 괄호 문제(https://hgk5722.tistory.com/51)에선 스택의 길이를 측정할떄 맨 앞에 있는 if문으로 걸렀는데 이제는 #4에서 처럼 스택의 길이와 최상단의 원소를 같이 확인하는 if문으로 바꾸었다.
2가지 방법 중 어느것이 더 좋은지는 아직 모르겠으나 2가지 방법이 모두 있다는 것을 기억하겠다.
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 9375 파이썬(python) : 패션왕 신해빈 - (★) (0) | 2022.06.17 |
---|---|
[백준] 1874 파이썬(python) : 스택 수열 (0) | 2022.06.17 |
[백준] 9012 파이썬(python) : 괄호 (0) | 2022.06.17 |
[백준] 10773 파이썬(python) : 제로 (0) | 2022.06.17 |
[백준] 2812 파이썬(python) : 크게 만들기 - (★) (0) | 2022.06.16 |