Data Science/알고리즘 공부
[백준][파이썬] 4949번 균형잡힌 세상
titaniumm
2020. 3. 12. 00:41
[핵심]
스택을 활용한 괄호 검사 문제이다. 이전에 단순(())를 검사하는 문제와 거의 유사하지만
조금의 차이점이 있다.
"("와 "["를 구별해주어야 한다는 점이다. 또한 "(" 다음에 "]"가 아닌 ")" 오는지를 검사해주어야하는데 이를 비교하기 위해 change함수를 추가로 도입했다.
나중에 이런 유형의 문제에서 다양한 변수 혹은 기호가 쓰여도 check해주는 부분에
함수를 활용하면 될것같다.
def change(str):
if str == "]":
t = "["
return t
elif str == ")":
return "("
while True:
tmp = 0
str = input()
stack = []
if str == ".":
break
lit = list(str)
for i in lit:
if i == "[" or i =="(":
stack.append(i)
elif i =="]" or i == ")":
if len(stack)==0:
print("no")
tmp =1
break
check = stack.pop(-1)
if check == change(i):
continue
else:
tmp=1
print("no")
break
if len(stack) ==0 and tmp ==0:
print("yes")
elif len(stack) != 0 and tmp ==0:
print("no")