코드
while True:
string = input()
if string == '.':
break
stack = []
check = True
for i in string:
if i == '(' or i == '[': #stack에 넣음
stack.append(i)
elif i == ')':
if stack and stack[-1] == '(': #stack이 안비었으면
stack.pop()
else:
check = False
break
elif i == ']':
if stack and stack[-1] == '[': #stack이 안비었으면
stack.pop()
else:
check = False
break
if not stack and check:
print('yes')
else:
print('no')
풀이
(이나 [가 나오면 stack에 append하고
)이 나오면 stack이 안비었고 stack에 마지막이 (인지 확인해서 pop하고
비었으면 break (균형 안잡힌 세상)
마찬가지로 ]이 나왔을때도 똑같이 확인
그리고 문자열이 다 끝나고 나서 stack이 다 비워졌고 check가 true면 yes를 하고
(check는 문자를 끝까지 돌았는지 확인하기 위해 만든 변수이고
중간에 stack이 비었는데 )이나 ]이 나오면 check는 false가 된다)
아니라면 no를 출력한다.
728x90
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 1021 회전하는 큐 파이썬 풀이 (큐) (0) | 2021.06.21 |
---|---|
[백준] 1874 스택수열 파이썬 풀이 (스택) (0) | 2021.06.21 |
[백준] 1010 다리 놓기 파이썬 풀이 (정수론 및 조합론) (0) | 2021.06.21 |
[백준] 11050 이항계수 1 파이썬 풀이 (정수론 및 조합론) (0) | 2021.06.21 |
[백준] 1934 최소 공배수 파이썬 풀이 (정수론 및 조합론) (0) | 2021.06.21 |