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

KYUNG HWAN·2021년 8월 29일
0

Algorithm

목록 보기
14/18
post-thumbnail

🧑🏻‍💻 문제링크

문제풀이

스택 문제 중에서 가장 대표적인 올바른 괄호팰린드롬과 같이 스택을 이용하여 균형이 맞는지 확인할 수 있는 방법만 알면 푸는데 크게 어렵지 않은 문제인 것 같다. 문제에서 이렇게

변환 과정을 알려주기 때문에 저 지문에 따라서 코드를 작성하기만 하면 된다.

코드

# 문자열 u, v로 분리
def divide(w):
    temp = ''

    for i in range(len(w)):
        temp = w[:i+1]
        left = temp.count('(')
        right = temp.count(')')

        if left == right:
            u = temp
            v = w[i+1:]
            return (u, v)

# 균형잡힌 괄호인지 체크
def isBalanced(u):
    stack = []

    for i in u:
        if i == '(':
            stack.append(i)
        else:
            if not stack:
                return False
            stack.pop()
    return True

def solution(p):
    answer = ''
    w = p

    # 과정 1
    if w == '':
        return ''

    # 과정 2
    u, v = divide(w)

    # 과정 3
    if isBalanced(u):
        # 과정 3-1
        u += solution(v)
        return u

    # 과정 4
    else:
        # 과정 4-1
        temp = '('
        # 과정 4-2
        v = solution(v)
        # 과정 4-3
        temp += v + ')'
        # 과정 4-4
        for s in u[1:-1]:
            if s == '(':
                temp += ')'
            else:
                temp += '('

    return temp

결과

profile
내가 그린 기린 그림

0개의 댓글