https://school.programmers.co.kr/learn/courses/30/lessons/60058?language=python3
"균형잡힌 괄호 문자열" p가 매개변수로 주어질 때, 주어진 알고리즘을 수행해 "올바른 괄호 문자열"로 변환한 결과를 return 하도록 solution 함수를 완성해 주세요.
def solution(p):
answer = ''
dic = {'(':1, ')': -1}
stack = []
while True:
# case 1
if len(p) == 0:
break;
count = dic[p[0]]
# case 2
for i in range(1, len(p)):
count += dic[p[i]]
if count == 0:
break;
u, v = p[:i+1], p[i+1:]
cnt = 0
flag = True
for s in u:
cnt += dic[s]
if cnt < 0:
flag = False
break
# case 3
if flag :
answer += u
p = v
continue
# case 4
answer += "("
p = v # 4-2
u = u[1:-1] # 4-4, 제거
st = ""
for s in u: # 4-4 뒤집어서
temp = "(" if s == ")" else ")"
st += temp
stack.append(st)
stack.append(")") # 4-3
while stack:
answer += stack.pop()
return answer
def solution(p):
if p=='': return p
r=True; c=0
for i in range(len(p)):
if p[i]=='(': c-=1
else: c+=1
if c>0: r=False
if c==0:
if r:
return p[:i+1]+solution(p[i+1:])
else:
return '('+solution(p[i+1:])+')'+''.join(list(map(lambda x:'(' if x==')' else ')',p[1:i]) ))