문제 :

https://www.welcomekakao.com/learn/courses/30/lessons/60058


나의 풀이 :

def solution(p):
    trans = {'('1')': -11'(', -1')'}

    def split(s):
        e = trans[s[0]]
        i = 1
        while e != 0 and i < len(s):
            e += trans[s[i]]
            i += 1
        return (s[:i], s[i:])

    def is_correct(s):
        e = 0
        for c in s:
            e += trans[c]
            if e < 0:
                return False
        return True

    def make_correct(uv):
        ret = '(%s)' % recursion(v)
        for c in u[1:-1]:
            ret += trans[-trans[c]]
        return ret

    def recursion(s):
        if not s:
            return s
        u, v = split(s)
        if is_correct(u):
            return u + recursion(v)
        return make_correct(u, v)

    return recursion(p)