Head vs breakz

[code] - 카카오 괄호변환 python 본문

Head/Code

[code] - 카카오 괄호변환 python

headbreakz 2020. 5. 4. 20:17
# 괄호변환
def solution(p):
    
    if p =="":
        return ""
    elif len(p) % 2 == 0:
        qq = div_val(p,point_val(p))       
        
        return qq



def point_val(p):
    a = 0
    count = 1
    q = list(p)
    for i in range(len(q)):
        if q[i]=="(":
            count +=2
            if count == 1:
                a = i
                break

        elif q[i]==")":
            count -=2
            if count == 1:
                a = i
                break
    return a

def div_val(p,a):
    count = []
    q = list(p)
    u =q[:a+1]
    v =p[a+1:]
    if check_val(u) ==True :
        return p[:a+1]+solution(v)
    else :    
        v = "("+solution(v)+")"        
        u =u[1:-1]
        for i in range(len(u)):
            if u[i]=="(":
                u[i] = ")"
            elif u[i] ==")":
                u[i]= "("
        u="".join(u)
        
        answer = v + u

        return answer

def check_val(u):
    count=[]
    for i in range(len(u)):
        if u[i] == "(":
            count.append(u[i])
        elif u[i] == ")" :
            if len(count) == 0:
                return False
            else :
                count.pop()
        
    if len(count) != 0 :
        return False    
    else :
        return True

point_div는 처음 받은 문자열을 나눌 지점을 찾는 함수

div_val은 나눈 문자열을 처리하는 함수

check_val은 나눈 문자열이 균형잡히고,올바른 문자열인지 확인하는 함수

Comments