본문 바로가기
알고리즘/코드

2020 KAKAO BLIND RECRUITMENT 괄호 변환 Python

by MOVE🔥 2020. 11. 28.
728x90
반응형

문제에 쓰여진 설명대로 그대로 코딩했다.

 

def rightWord(w):
    store = 0
    for i in w :
        if i == ')':
            store -= 1
        else :
            store += 1
        if store < 0:
            return False
    return True

def run(w):
    # 2. U / V 분리
    u = ''
    v = ''
    r = l = 0
    
    for i, v in enumerate(w) :
        if v == '(':
            r += 1
        else :
            l += 1
        if r == l :
            u = w[:i+1]
            v = w[i+1:]
            break
    
    if w == '':
        return ''
    
    # 3. 올바른 괄호 문자열 인지 check
    if(rightWord(u)):
        # 3-1. 올바른 괄호면 그대로 추가
        return u + run(v)
    else :
        # 4-5. 
        u = u[1:len(u)-1]
        u =  u.replace("(","1").replace(")","(").replace("1",")")        
        return "(" + run(v) + ")" + u
    
def solution(p):
    # 1. 빈문자열 check
    if p == '':
        return ''
    
    return run(p)

 

 

 

728x90
반응형

댓글