[프로그래머스/파이썬] Level 2 괄호 변환

bye9·2021년 3월 27일
0

알고리즘(코테)

목록 보기
99/130

https://programmers.co.kr/learn/courses/30/lessons/60058#


알고리즘 분류

  • 구현(문자열)

문제풀이

문제를 이해하는데 좀 어려웠다.

seperate함수는 해당 문자열을 u,v형태로 분리해주기 위함이고, correct함수는 올바른 괄호 문자열인지 아닌지 판단하기 위함이다.

이외에는 박스 안의 알고리즘 대로 구현해주면 된다.

소스코드

def seperate(array):
    start,end=0,0
    for i in range(len(array)):
        if array[i]=="(":
            start+=1
        else:
            end+=1
        if start==end:
            return (array[:i+1],array[i+1:])
    
def correct(u):
    start,end=0,0
    for i in u:
        if i=="(":
            start+=1
        else:
            end+=1
        if start<end:
            return False
    return True

def solution(p):
    if p=="" or correct(p):
        return p
    u,v=seperate(p)
    if correct(u):
        return u+solution(v)
    else:
        temp="("
        temp+=solution(v)
        temp+=")"
        u=list(u[1:-1])
        for i in range(len(u)):
            if u[i]=='(':
                u[i]=")"
            elif u[i]==")":
                u[i]="("
        temp+="".join(u)
        return (temp)

0개의 댓글