DataScience trainee

Programmers - 괄호 변환

괄호 변환


개요

  • 이번 포스팅은 파이썬 코딩테스트 연습문제 풀이입니다.
  • Programmers 에 공개된 예제이며 링크는 아래와 같습니다.

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


코드

def solution(p):
    
    def fix(p):
        count = []
        for index, m in enumerate(p):
            if m == '(':
                count.append(1)
            elif m == ')':
                count.append(-1)

            if sum(count) == 0 and count != []:
                if sum(count[:index]) < 0:
                    break
                else:
                    return p
 
        if p == '':
            return p
        else:
            p = p[1:-1]
            temp_p = ''
            for a in p:
                if a == '(':
                    temp_p += ')'
                else:
                    temp_p += '('
            p = temp_p
            return p
    
    # --------------------------------------------------------
    def checking(p, answer = ''):
        count = []
        for index, m in enumerate(p):
            if m == '(':
                count.append(1)
            elif m == ')':
                count.append(-1)

            if sum(count) == 0:
                if sum(count[:index]) < 0:
                    answer += '(' + checking(p[index + 1:]) + ')'
                    answer += fix(p[:index + 1])
                    return answer
                else:
                    answer += p[:index + 1]
                    return checking(p[index + 1:], answer)

        if count == []:
            return answer

# -------------------------------------------------------------


    answer = checking(p)
    return answer

마치며

이번 포스팅은 Programmers에 존재하는 파이썬 코딩테스트 예제 중 레벨 2에 해당하는 문제입니다.