두 번째 문제는 괄호 회전하기입니다.
괄호 문자열이 올바른 지 판단하는 문제 유형인데 회전하는 내용이 추가 되었습니다.
어떻게 판별할 지 기발한 아이디어가 떠오르지 않아 단순한 브루트포스로 접근하였고
다행히 시간 내에 통과했습니다.
하지만 더 좋은 아이디어가 있을 것 같다는 예감이 듭니다.
# 전달받은 문자열이 올바른지 판별
def is_right_prnt(s):
right_prnt = {'{' : '}',
'(' : ')',
'[' : ']'}
stack = []
for char in s:
if stack:
if char == right_prnt.get(stack[-1]):
stack.pop()
else:
# 예외 처리
if char in '])}':
return False
else:
stack.append(char)
else:
# 예외 처리
if char in '])}':
return False
else:
stack.append(char)
return False if stack else True
def solution(s):
answer = 0
# 회전된 문자열 저장할 buffer.
buffer = ''
for i in range(len(s)):
buffer = s[i:] + s[:i]
if is_right_prnt(buffer):
answer += 1
return answer
시간 복잡도 : O(n^2), n : 문자열의 길이