ALGORITHM/Kakao

[Python] 괄호 변환

김쿸후 2021. 9. 30. 01:45

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/60058?language=python3

 

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

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

programmers.co.kr

2. 풀이

 - 파이썬 string 함수 뒤집기

ans = ans + u[:: -1]

 

3. 코드

# p를 문자열 2개로 분리
def split(p):
    cnt = 0
    index =0
    for index in range(len(p)):
        if p[index] == ')':
            cnt = cnt +1
        else : 
            cnt = cnt -1
        if cnt == 0:
            break
    return p[:index+1],p[index+1:]

# u가 올바른 괄호 문자열인지 확인
def check(u):
    stack = []
    for p in u:
        if p == '(':
            stack.append(p)
        else:
            # 스택이 비어있으면               
            if stack == []:
                return False
            stack.pop()
    return True   

        
def solution(p):
    if len(p) == 0:
        return ""

    # u, v 로 분리
    u,v = split(p)
    
    if (check(u)):
        return u + solution(v)
    else : 
        ans = '('
        ans = ans + solution(v)
        ans = ans + ')'
        # 앞뒤 자르고 괄호 바꾸기        
        u = u[1:len(u)-1]
        ans = ans + u[:: -1]
           
    return ans