본문 바로가기
Programming/Programmers

[프로그래머스] 괄호 변환(Python)

by 데이터현 2021. 10. 23.

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

 

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

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

programmers.co.kr

주어진 조건대로 구현하면 되는 문제다.

살짝 까다롭긴 했지만 풀만 했던 것 같다.

 

나의 코드

def check_correct(p):
    stack = []
    for i in p:
        if i =='(':
            stack.append(i)
        elif len(stack) ==0:
            return False
        else:
            stack.pop()
    return True
def split_bracket(p):
    stack = []
    for i,v in enumerate(p):
        if len(stack)==0:
            stack.append(v)
        elif stack[-1] == v:
            stack.append(v)
        else:
            stack.pop()
            if len(stack) == 0:
                return p[:i+1] , p[i+1:]
def solution(p):
    if len(p) ==0:
        return p
    # 올바른 괄호 문자열인지 확인
    if check_correct(p):
        return p
    # 두 문자열로 분리 u는 더 이상 쪼갤 수 없는 균형잡힌 문자열
    answer = ''
    u, v = split_bracket(p)
    if check_correct(u):
        answer += u + solution(v)
    else:
        u = u[1:-1]
        stack = ''
        for i in u:
            if i =='(':
                stack+=')'
            else:
                stack+='('
        u = stack
        answer += '('+solution(v)+')'+ u
    return answer

 

댓글