<오답>
c1 = c2 = 0
while True:
s = input()
if s == ".":
break
for i in s:
if i == '(':
c1 += 1
elif i == ')':
c1 -= 1
elif i == '[':
c2 += 1
elif i == ']':
c2 -= 1
if c1 < 0 or c2 <0:
print("no")
break
if c1 == 0 and c2 == 0:
print("yes")
elif c1 > 0 and c2 > 0:
print("no")
<정답>
while True:
s = input()
#종료조건
if s == '.':
break
stack = []
check = True
for i in s:
if i == '(' or i == '[':
stack.append(i)
elif i == ')':
if not stack or stack[-1] == '[':
check = False
break
elif stack[-1] == '(':
stack.pop()
elif i == ']':
if not stack or stack[-1] == '(':
check = False
break
elif stack[-1] == '[':
stack.pop()
if check == True and not stack:
print('yes')
else:
print('no')
# len(stack) == 0보다 not stack을 사용해서 빈 리스트인지 확인한다고 한다.
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][스택] 17298. 오큰수 (파이썬/Python) (0) | 2021.11.16 |
---|---|
[백준][스택] 1873. 스택 수열 (파이썬/Python) (0) | 2021.11.15 |
[백준][스택] 9012. 스택 (파이썬/Python) (0) | 2021.11.11 |
[백준][BFS] 1753. 최단경로 (파이썬/Python) (0) | 2021.11.09 |
[백준][BFS] 7576. 토마토 (파이썬/Python) (0) | 2021.11.09 |