티스토리 뷰
728x90
반응형
문제
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
코드
while True:
s = input()
if s == '.':
break
stack = []
answer = True
for i in s:
if i =='(' or i == '[':
stack.append(i)
elif i == ')':
if len(stack) == 0:
answer = False
break
if stack[-1] == '(':
stack.pop()
else:
answer=False
break
elif i ==']':
if len(stack) == 0:
answer = False
break
if stack[-1] == '[':
stack.pop()
else:
answer = False
break
if answer and not stack:
print("yes")
else:
print("no")
코드설명
입력값 '.' 이 들어올때까지 무한루프를 돈다.
'(' 또는 '[' 괄호가 들어오면 stack에 넣어주고
')' 들어왔을때는 스택을 검사해 비어있다면 false를 주고 break문으로 빠져나간다. 만약 비어 있지 않다면 stack에 가장 위에 값을 검사해 괄호 짝이 맞다면 pop을 해주고 괄호 짝이 안맞다면 false를 주고 break문으로 빠져나간다.
']' 들어왔을때는 스택을 검사해 비어있다면 false를 주고 break문으로 빠져나간다. 만약 비어 있지 않다면 stack에 가장 위에 값을 검사해 괄호 짝이 맞다면 pop을 해주고 괄호 짝이 안맞다면 false를 주고 break문으로 빠져나간다.
for문을 다 돌고 True 이면서 stack 안에 값이 비어있다면 괄호 짝이 맞는것이기 때문에 YES를 출력한다.
false라면 NO를 출력한다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2108번 통계학 (Python) (0) | 2021.03.15 |
---|---|
[백준] 1260번 DFS와 BFS (Python) (0) | 2021.03.14 |
[백준] 18258번 큐 2 (Python) (0) | 2021.03.13 |
[백준] 9012번 괄호 (Python) (1) | 2021.03.13 |
[백준] 10828번 스택 (Python) (0) | 2021.03.13 |
댓글