[핵심]
스택을 활용한 괄호 검사 문제이다. 이전에 단순(())를 검사하는 문제와 거의 유사하지만
조금의 차이점이 있다.
"("와 "["를 구별해주어야 한다는 점이다. 또한 "(" 다음에 "]"가 아닌 ")" 오는지를 검사해주어야하는데 이를 비교하기 위해 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")
'Data Science > 알고리즘 공부' 카테고리의 다른 글
[백준][파이썬] 4763번 셀프넘버 (0) | 2020.03.13 |
---|---|
[백준][파이썬] 2164번 카드2 (0) | 2020.03.12 |
[백준][파이썬] 17478번 재귀함수가 뭔가요? (0) | 2020.03.11 |
[백준][파이썬] 1874번: 스택 수열 (0) | 2020.03.11 |
[백준][파이썬] 1593 문자 해독 (0) | 2020.03.10 |
댓글