1def check(string):
2 stack = []
3 for i in string:
4 if i == '(' or i == '{' or i == '[':
5 stack.append(i)
6 else:
7 if len(stack) == 0:
8 return False
9 if i == ')':
10 if stack[-1] != '(': return False
11 if i == '}':
12 if stack[-1] != '{': return False
13 if i == ']':
14 if stack[-1] != '[': return False
15 stack.pop()
16 if len(stack) != 0: return False
17 return True
18
19def solution(s):
20 s = list(s)
21 result = 0
22 for i in range(len(s)):
23 if check(s):
24 result += 1
25 s.append(s.pop(0))
26 return result
문제
- 괄호를 포함하는 문자열 S가 주어진다
- 문자열 S를 왼쪽으로 x(0 <= x < s의 길이)만큼 왼쪽으로 회전시켰을때 S가 올바른 괄호 문자열이 되게하는 x의 개수를 구하라
- TC
해결방법
- S를 왼쪽으로 한 칸씩 당기면서 check함수를 호출한다
- check함수에서는 스택을 이용하여 매개로 받은 문자열이 올바른 괄호 문자열인지 판단한다