Search
Duplicate

괄호 변환

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

counterpart = {'(': ')', ')': '('} def is_valid(p): stack = [] for char in p: if len(stack) == 0: stack.append(char) elif char == '(': stack.append(char) elif char == ')': if stack[-1] == '(': stack.pop() else: stack.append(char) return len(stack) == 0 def split_balanced(p): n = 1 if p[0] == '(' else -1 for i, char in enumerate(p[1:], 1): n += 1 if char == '(' else -1 if n == 0: return p[:i+1], p[i+1:] def process(p): if p == '': return '' u, v = split_balanced(p) if is_valid(u): return u + process(v) else: s = '(' + process(v) + ')' s += ''.join(counterpart[char] for char in u[1:-1]) return s def solution(p): return process(p)
Python
복사

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges