티스토리 뷰
728x90
반응형
문제
코드
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 |
댓글