

스택을 사용한 올바른 괄호 판별
check 함수에서 올바른 괄호라면 1을 그렇지 않다면 0을 반환
괄호의 여는 부분((, [, {)이 들어온다면 스택에 추가하고, 닫는 부분(), ], })이 들어온다면 스택의 가장 위에 있는 괄호와 비교해 짝이라면 꺼내고, 짝이 아니라면 올바른 괄호가 아니므로 return 0
pair = {'}': '{', ')': '(', ']': '['}
def check(_s):
stack = [_s[0]]
for strs in _s[1:]:
if strs in ('{', '(', '['):
stack.append(strs)
continue
if stack and stack.pop() != pair[strs]:
return 0
if stack:
return 0
return 1
def solution(s):
if len(s) == 1:
return 0
ans = 0
for i in range(len(s)):
ans += check(s[i:]+s[:i])
return ans