728x90
문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/60058
코드
def divide(p):
openP = 0
closeP = 0
for i in range(len(p)):
if p[i] == '(':
openP += 1
elif p[i] == ')':
closeP += 1
if openP == closeP:
return p[:i+1],p[i+1:]
def check(u):
stack = []
for i in u:
if i == '(':
stack.append(i)
else:
if not stack:
return False
else:
stack.pop()
return True
def solution(p):
result = ''
# 1번
if not p :
return ''
# 2번
u, v = divide(p)
# 3번
if check(u):
return u + solution(v)
else:
result += '(' + solution(v) + ')'
for i in u[1:-1]:
if i == '(':
result += ')'
else:
result += '('
return result
728x90
'코딩테스트' 카테고리의 다른 글
BFS&DFS_심화20) 감시 피하기 _ python (0) | 2023.09.25 |
---|---|
BFS&DFS_심화19) 연산자 끼워 넣기 _ python (0) | 2023.09.25 |
BFS&DFS_심화17) 경쟁적 전염 _ python (0) | 2023.09.25 |
BFS&DFS_심화16) 연구소 _ python (0) | 2023.09.25 |
BFS&DFS_심화15) 특정 거리의 도시 찾기 _ python (0) | 2023.09.25 |