https://programmers.co.kr/learn/courses/30/lessons/60058
재귀재귀한 재귀문제다
나머지 구현은 쉬웠지만
재귀를 적용하는게 좀 어려웠다
def solution(p):
if p == '':
return ''
def change(w):
u = ''
v = ''
a,b = 0,0
for i in range(len(w)):
if w[i] == '(':
u += w[i]
a += 1
else :
u += w[i]
b += 1
if a == b:
v = w[i+1:]
return (u,v)
return (u,v)
def check(u):
stack = []
for i in u:
if i == '(':
stack.append(1)
else :
if len(stack) == 0:
return False
stack.pop()
return True
def recursive(s):
if s == '':
return ''
u,v = change(s)
if check(u):
return u+recursive(v)
else :
one = '(' + recursive(v) + ')'
two = u[1:-1]
for i in two:
if i == '(':
one += ')'
else :
one += '('
return one
return p if check(p) else recursive(p)