첫번째 로직
- 문자열 슬라이싱을 이용해서 하나씩 회전시켜준다.
두번째 로직
- 먼저 닫히는 괄호들 먼저 루프를 돌면서 확인 후, 닫히는 괄호라면 stack 안에 짝이 맞는 여는 괄호가 있는지 체크한다.
- 없거나, stack이 비어있다면 그 문자는 올바른 괄호가 아니기 때문에 answer를 카운트 해주지 않는다.
- 짝이 맞더라도 루프가 끝날때까지 계속 검사해준다.
- 만약 닫히는 괄호가 아니라면?
- stack에 넣어준다.
def solution(s):
answer = 0
temp = s
dic = {"}" : "{", ")" : "(", "]" : "["}
for i in range(len(s)):
temp = s[i:] + s[0 : i]
stack = []
answer += 1
flag = True
for j in temp:
for end, start in dic.items():
if j == end:
if not stack:
flag = False
break
else:
a = stack.pop()
if a != start:
flag = False
break
if not flag:
answer -= 1
break
if j not in dic:
stack.append(j)
if stack and flag:
answer -= 1
return