레벨2 문제 실패
from collections import deque
# 올바른 괄호 문자열인지 확인
def check(sen):
stack = 0 # 왼쪽 괄호의 개수
for i in sen:
if i == '(':
stack += 1
else:
stack -= 1
if ( stack < 0 ): # 쌍이 맞지 않는 경우에 False 반환
return False
return True # 쌍이 맞는 경우에 True 반환
# 뒤집기
def reverse(s):
ans = ''
for i in s:
if i == '(':
ans += ')'
else:
ans += '('
return ans
# 메인함수
def solution(p):
if ( p == '' ):
return ''
stack = 0
for i in range(len(p)):
if p[i] == '(':
stack += 1
else:
stack -= 1
if stack == 0:
u = p[:i+1]
v = p[i+1:]
break
# 올바른 괄호 문자열 이면, v에 대해 함수를 수행한 결과를 붙여 반환
if check(u):
return u + solution(v)
# 올바른 괄호 문자열 이 아니라면, 아래의 과정을 수행
else: # 첫 번째와 마지막 문자를 제거
temp = '(' + solution(v) + ')' + reverse(u[1:-1])
return temp