[이.취.코] [프로그래머스] Chap 13. BFS_DFS - Q18. 괄호 변환

1. 괄호 변환

A. 문제

위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.

B. 내 답안


def balance_str(w):
    l_count = 0
    r_count = 0

    for i in w:
        if i == '(':
            l_count += 1
        elif i == ')':
            r_count += 1

        if l_count == r_count:
            return l_count + r_count

def right_str(u):
    count = 0

    if u[0] == '(':
        for i in u:
            if i == '(':
                count += 1
            elif i == ')':
                count -= 1

            if count < 0:
                return False
        return True
    elif u[0] == ')':
        return False


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

    split_num = balance_str(p)

    u = p[:split_num]
    v = p[split_num:]

    # print(u)

    if right_str(u) == True:
        # temp = solution(v)
        # if len(temp)
        answer = u + solution(v)
        return answer
    elif right_str(u) == False:
        answer = '(' + solution(v) + ')'
        u = u[1:-1]
        for i in u:
            if i == '(':
                answer += ')'
            elif i == ')':
                answer += '('

        return answer

print(solution("()))((()"))

a. 회고

내 풀이

  • 문제에 주어진대로 풀었다.

반성

  • 문제를 대충 읽는다는 점과 재귀를 확실히 못다룬다는 점이 문제다.

결론

  • 문제를 완전히 읽고 풀자.

C. 문제 해설

이해한 내용을 바탕으로 작성했습니다.

  • 균형잡힌 괄호 문자열
    • '(' 의 개수와 ')'의 개수가같은 문자열
  • 올바른 괄호 문자열
    • 균형잡힌 괄호 문자열이고 '(' 와 ')' 의 괄호의 짝이 모두 맞는 문자열

문제에 제시된 논리대로 해결하면 된다.

a. 책 답안

python-for-coding-test/4.py at master · ndb796/python-for-coding-test (github.com)

참고문헌

[1] 나동빈, "이것이 취업을 위한 코딩 테스트다 with 파이썬", 초판, 2쇄, 한빛미디어, 2020년

[2] 코딩테스트 연습 - 괄호 변환 | 프로그래머스 (programmers.co.kr). Programmers. (accessed Sep 24, 2021)

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.