컴공생의 다이어리

[프로그래머스] 괄호 변환 - 파이썬(Python) 본문

Development/Algorithm & Coding Test

[프로그래머스] 괄호 변환 - 파이썬(Python)

컴공 K 2022. 6. 28. 00:01

[프로그래머스] 괄호 변환 - 파이썬(Python)

 

 

 

from collections import deque

def separate_u_v(p):  # 문자열 p를 u와 v로 분리
    # u : 균형잡힌 괄호 문자열, v : 나머지
    open_p, close_p = 0, 0
    for i in range(len(p)):
        if p[i] == '(':
            open_p += 1
        else:
            close_p += 1
        if open_p == close_p:
            return p[:i + 1], p[i + 1:]  # u, v


def check_balance(u):  # 문자열 u가 올바른 괄호 문자열인지 체크
    stack = deque()
    for i in u:
        if i == '(':
            stack.append(i)
        else:
            if not stack:
                return False
            stack.pop()
    return True if not stack else False


def solution(p):
    if not p:  # 과정 1
        return p

    u, v = separate_u_v(p)  # 과정 2

    if check_balance(u):  # 과정 3
        return u + solution(v)  # 과정 3-1
    else:  # 과정 4
        answer = '('  # 과정 4-1
        answer += solution(v)  # 과정 4-2
        answer += ')'  # 과정 4-3

        for pp in u[1:len(u) - 1]:  # 과정 4-4
            if pp == '(':
                answer += ')'
            else:
                answer += '('
    return answer  # 과정 4-5

 

 

 

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

 

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

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

programmers.co.kr

 

728x90
Comments