반응형

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

 

 

 

 

** Python

 

def get_uv(p):
    a = 0
    for i, e in enumerate(p):
        if e == "(":
            a += 1
        else:
            a -= 1
        if a == 0:
            return p[:i+1], p[i+1:]
def is_u_right(u):
    stack = []
    for p in u:
        if p == '(':
            stack.append(p)
        else:
            if not stack:
                return False
            stack.pop()
    return True

def solution(p):
    if p == "": return p
    u, v = get_uv(p)
    if is_u_right(u):
        return u + solution(v)
    else:
        # 4-1
        answer = '('
        # 4-2
        answer += solution(v)
        # 4-3
        answer += ')'
        # 4-4
        for p in u[1:len(u)-1]:
            if p == '(':
                answer += ')'
            else:
                answer += '('
        # 4-5
        return answer

 

참고: https://jokerldg.github.io/algorithm/2021/05/22/parentheses-change.html

 

반응형

+ Recent posts