본문 바로가기
알고리즘

[알고리즘] 괄호 변환

by keel_im 2021. 5. 2.
반응형

포인트

  • 정말 주어진 그대로를 구현하는 문제였습니다. '반환' , '재귀' 이런 용어들이 구현하는데에 커다란 도움이 되었습니다. 

🧶문서는 항상 수정될 수 있습니다. 비판은 환영합니다. 

python

def check(line: str) -> bool:
    stack = []
    for ele in line:
        if not stack:
            stack.append(ele)
        elif stack and stack[-1] == '(' and ele == ')':
            stack.pop(-1)
        else:
            stack.append(ele)
    return len(stack) == 0


def go(target: str) -> str:
    if not target:
        return ''

    left, right = 0, 0
    u, v = '', ''
    for index, value in enumerate(target):
        if value == '(':
            left += 1
        if value == ')':
            right += 1
        if left == right:
            u, v = target[:index + 1], target[index + 1:]
            break

    if check(u):
        return u + go(v)
    else:
        temp = '(' + go(v) + ')'
        reverse_u = u[1:-1]
        tail = ""
        for re in reverse_u:
            if re == '(':
                tail += ')'
            else:
                tail += '('
        temp += tail
        return temp


def solution(p: str):
    return p if check(p) else go(p)

 

반응형

'알고리즘' 카테고리의 다른 글

[알고리즘] 문자열 압축  (0) 2021.05.03
[알고리즘] Running Sum of 1d Array  (0) 2021.05.03
[알고리즘] 오픈 채팅방  (0) 2021.05.02
[알고리즘] 멀리 뛰기  (0) 2021.05.02
[알고리즘] 야근 지수  (0) 2021.05.02

댓글