https://programmers.co.kr/learn/courses/30/lessons/60058
def is_correct(p):
count = 0
for c in p:
if c == '(':
count += 1
else:
count -= 1
if count < 0:
return False
if count == 0:
return True
else:
return False
def reverse_p(p):
result = ''
for c in p:
if c == '(':
result += ')'
else:
result += '('
return result
def func(p):
if p == '':
return p
count = 0
u = ''
v = ''
for i, c in enumerate(p):
if c == '(':
count += 1
else:
count -= 1
if i != 0 and count == 0:
u = p[:i + 1]
v = p[i + 1:]
break
if is_correct(u):
return u + func(v)
else:
return '(' + func(v) + ')' + reverse_p(u[1:len(u) - 1])
def solution(p):
if is_correct(p):
return p
return func(p)
recursion 사용해서 해결