[Python] 프로그래머스(Lv2) - 괄호 변환 (2020 KAKAO BLIND RECRUITMENT )

Kerri·2021년 3월 13일
0

코테

목록 보기
13/67

안녕하세요 :)

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

저번글에 올바른 괄호 문제를 풀었죠 ? 거기서 작성했던 풀이를 is_perfect 함수로 작성했습니다.
그 함수를 이용해서 2020 KAKAO BLIND RECRUITMENT 괄호 변환 문제를 풀 수 있습니다!

문제에 조건들이 4가지가 있기 때문에 solution 함수에서 어떤 것을 할지 대략적으로 작성해본 후 그 4가지에 대해 필요한 코드와 함수를 만들면 쉽게 풀 수 있습니다.

def is_perfect(s):
    cnt = 0
    for ch in s:
        if ch == "(":
            cnt += 1
        elif ch == ")":
            cnt -= 1
        if cnt < 0:
            break

    if cnt == 0:
        return True
    else:
        return False


def divide(p):
    cnt = 0
    u, v = "", ""
    for i in range(len(p)):
        if p[i] == "(":
            cnt += 1
        elif p[i] == ")":
            cnt -= 1
        if cnt == 0:
            u = p[:i+1]
            v = p[i+1:]
            break

    return u, v


def reverse_ch(s):
    s = list(s)
    for i in range(len(s)):
        if s[i] == "(":
            s[i] = ")"
        elif s[i] == ")":
            s[i] = "("

    return ''.join(s)


def solution(p):
    # 1. 빈 문자열
    if len(p) == 0:
        return ""

    # 2. divide(u, v)
    u, v = divide(p)

    # 3.u가 올바른 괄호 문자열이면
    if is_perfect(u):
        return u + solution(v)
    else: # 4.u가 올바른 괄호 문자열이 아니라면
        s = "(" + solution(v) + ")"
        u = reverse_ch(u[1:-1])
        return s + u
profile
안녕하세요 !

0개의 댓글