[프로그래머스] 괄호 변환 (Python)

cotato·2021년 5월 6일

https://programmers.co.kr/learn/courses/30/lessons/60058

My Solution

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 사용해서 해결

profile
coding_potato

0개의 댓글