Programmers#괄호 변환


LEVEL :

Level2


문제 요약 :

2020년 카카오톡 코딩테스트 제출 문제이다.

주어진 괄호들을 조건을 따라 쌍을 맞추는 문제이다


해결 방안 :

그냥 주어진 단계별로 다 구현하면 해결 할 수 있는 문제였다.


Solution

def seperate(ori) : 
    if not ori :
        return ""
    fCnt , lCnt = 0,0
    for i in range(len(ori)) :
        if ori[i] == '(' :
            fCnt += 1
        else :
            lCnt += 1
        if fCnt == lCnt and fCnt != 0 and lCnt != 0 :
            break
    return (ori[:i+1],ori[i+1:]) 

def check_str(s) :
    if not s :
        return False
    check = 0 
    for i in range(len(s)) :
        if s[i] == '(' :
            check +=1
        else :
            check -= 1
        if check < 0 :
            return False
    return True

def reverse_str(ori) :
    new = list(ori)
    for i in range(len(new)) :
        if new[i] == "(" :
            new[i] = ")"
        else :
            new[i] = "("
    return "".join(new)
        
def make_str(p) :
    tuple_str = seperate(p) #step1, #step2
    if not tuple_str :
        return ""
    res = ""
    u,v = tuple_str
    if check_str(u) == True : #step3
        res = u + make_str(v)
        return res
    else : #step4
        res = "(" + make_str(v) + ")" + reverse_str(u[1:-1])
        return res

def solution(p):
    answer = ''
    answer = make_str(p)
    return answer

출처

프로그래머스 : https://programmers.co.kr/learn/courses/30/lessons/60058

좋은 웹페이지 즐겨찾기