균형잡힌 괄호 문자열이라면 다음과 같은 과정을 통해 올바른 괄호 문자열로 변환할 수 있습니다.
균형잡힌 괄호 문자열 u,v로 분리합니다. 단, u는 균형잡힌 괄호 문자열로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다.올바른 괄호 문자열이라면 문자열 v에 대해서 1단계부터 다시 수행합니다.균형잡힌 괄호 문자열 p가 매개변수로 주어질 때, 주어진 알고리즘을 수행해 올바른 괄호 문자열로 변환한 결과를 return하도록 solution 함수를 완성해 주세요.
구현문제
def solution(p):
answer = ''
if checkRight(p):
return p
return solve(p)
def solve(w):
if w == '': return ''
index, num = 0, 0
while True:
num += 1 if w[index]=='(' else -1
index += 1
if num == 0:
break
u, v = w[:index],w[index:]
if checkRight(u): # u가 올바른 괄호 문자열인 경우
return u + str(solve(v))
return '(' + str(solve(v)) + ')' + reverse(u)
def reverse(u):
result = ''
for i in range(1,len(u)-1):
result += '(' if u[i] == ')' else ')'
return result
def checkRight(sen):
status = 0
for s in sen:
if s == '(': status += 1
else: status -= 1
if status < 0: return False
return True