def solution(p):
answer = chk(p)
return answer
def chk(p):
if p=="":
return ""
else:
u,v=devide(p)
if chk_right(u):
return u+chk(v)
else:
u_inverse=""
for i in u:
if i =="(":
u_inverse+=")"
elif i ==")":
u_inverse+="("
return "("+chk(v)+")"+u_inverse[1:-1]
def chk_right(p):# check p is right
l_num=0
r_num=0
for ch in p:
if ch=='(':
l_num+=1
elif ch==')':
r_num+=1
if r_num>l_num:
right=0
break
else:
right=1
return right
def devide(p):
l_num=0
r_num=0
for ch in p:
if ch=='(':
l_num+=1
elif ch==')':
r_num+=1
if l_num==r_num:
break
u=p[:2*l_num]
v=p[2*l_num:]
return (u,v)
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스] LEVEL2 땅따먹기, python3 (0) | 2020.01.07 |
---|---|
[프로그래머스] LEVEL2 올바른 괄호, python3 (0) | 2020.01.07 |
[프로그래머스] LEVEL2 카펫, python3, 완전탐색 (0) | 2019.11.20 |
[프로그래머스] LEVEL2 타겟 넘버, python3, 깊이/너비 우선 탐색(DFS/BFS) (0) | 2019.11.20 |
[프로그래머스] LEVEL2 멀쩡한 사각형,python3, 서머코딩/윈터코딩(2019) (0) | 2019.11.19 |