[9/18] 괄호 변환 (x)

이경준·2021년 9월 18일
0

코테

목록 보기
118/140
post-custom-banner

레벨2 문제 실패

코드

from collections import deque

# 올바른 괄호 문자열인지 확인
def check(sen):
    stack = 0 # 왼쪽 괄호의 개수
    for i in sen:
        if i == '(':
            stack += 1
        else:
            stack -= 1
        
        if ( stack < 0 ): # 쌍이 맞지 않는 경우에 False 반환
            return False
    return True # 쌍이 맞는 경우에 True 반환

# 뒤집기
def reverse(s):
    ans = ''
    for i in s:
        if i == '(':
            ans += ')'
        else:
            ans += '('
    return ans

# 메인함수
def solution(p):
    if ( p == '' ):
        return ''
    
    stack = 0
    for i in range(len(p)):
        if p[i] == '(':
            stack += 1
        else:
            stack -= 1
            
        if stack == 0:
            u = p[:i+1]
            v = p[i+1:]
            break
            
    # 올바른 괄호 문자열 이면, v에 대해 함수를 수행한 결과를 붙여 반환
    if check(u):
        return u + solution(v)
    # 올바른 괄호 문자열 이 아니라면, 아래의 과정을 수행
    else:				# 첫 번째와 마지막 문자를 제거
        temp = '(' + solution(v) + ')' + reverse(u[1:-1])
        return temp

로직

  • 문제 그대로 풀면 되긴 하는데... 말이 이해가 잘 안됐다.
profile
The Show Must Go On
post-custom-banner

0개의 댓글