본문 바로가기

Programming/Programmers

[프로그래머스/Python] 괄호변환(재귀/구현)

 

코딩테스트 연습 - 괄호 변환

카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴

programmers.co.kr

def isRight(u):
    tmp = []
    for i in u:
        if i == '(':
            tmp.append(i)
        if tmp and i == ')':
            tmp.pop()
    if len(tmp) == 0:
        return True
    else:
        return False
            
def splitstr(w):
    cnt = [0,0]
    for idx, char in enumerate(w):
        if char == '(':
            cnt[0]+=1
        if char == ')':
            cnt[1]+=1
        
        if cnt[0]==cnt[1]:
            break
    return w[:idx+1], w[idx+1:]
        
def flipstr(u):
    u = list(u)
    u.pop(0)
    u.pop()
    tmp = []
    for i in u:
        if i =='(':
            tmp.append(')')
        else:
            tmp.append('(')
    return "".join(tmp)
        
def recul(w):
    if len(w) == 0:
        return ""
    u, v = splitstr(w)
    if isRight(u):
        return u + recul(v)
    else:   
        return '(' + recul(v) + ')' + flipstr(u)
        

def solution(p):
    return recul(p)