[백준] 4949 균형잡힌 세상 (Python)
Source
https://www.acmicpc.net/problem/4949
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다
www.acmicpc.net
Code
import sys
input = sys.stdin.readline
while True:
line = str(input().rstrip())
stack = []
for i in line:
if i == '(':
stack.append('(')
elif i == '[':
stack.append('[')
elif i == ')':
if len(stack) > 0 and stack[-1] == '(':
stack.pop()
else:
stack.append(')')
elif i == ']':
if len(stack) > 0 and stack[-1] == '[':
stack.pop()
else:
stack.append(']')
if line == '.':
break
if stack:
print('no')
else:
print('yes')
How to solve?
()나 []처럼 괄호가 열린 뒤 닫혀야 한 쌍이 성립한다.
따라서 스택 구조를 만들어서 push가 이루어진 뒤 만약 )나 ]를 push했는데 그 이전에 (나 [가 있어 쌍구조를 이룬다면 pop해준다. 이렇게 만든 스택이 비었다면 yes를 출력해주고 비어있지 않다면 no를 출력해준다.
'Problem solve' 카테고리의 다른 글
[백준] 1654번 랜선 자르기 (Python) (0) | 2022.11.03 |
---|---|
[백준] 2164번 카드2 (python) (0) | 2022.11.02 |
[백준] 쿼드트리 (Python) (0) | 2022.11.01 |
[백준] 1920 수 찾기 (Python) (0) | 2022.10.31 |
[백준] 2630 색종이 만들기 (Python) (0) | 2022.10.28 |