알고리즘/백준 문제풀이
[백준] 4949 균형잡힌 세상 파이썬 풀이 (스택)
자바칩 프라푸치노
2021. 6. 21. 17:06
코드
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