"""
출처:프로그래머스,
https://school.programmers.co.kr/learn/courses/30/lessons/76502
"""
# 풀이 과정
def solution(s):
from collections import deque
result = 0
count = 0
k = deque(list(s))
check = []
open_ = ["[", "(", "{"]
close_ = ["]", ")", "}"]
if len(s) == 1:
return 0
while count < len(s):
if k[-1] in open_ or k[0] in close_:
a = k.popleft()
k.append(a)
count += 1
else:
check = []
flag = False
for b in k:
if b in open_:
check.append(b)
elif b in close_:
if len(check) == 0:
flag = True
break
else:
c = close_.index(b)
d = open_.index(check[-1])
if c == d:
check.pop()
else:
break
if len(check) == 0:
if flag == False:
result += 1
a = k.popleft()
k.append(a)
count += 1
else:
a = k.popleft()
k.append(a)
count += 1
return result