- Reference
- 문제 풀 때 당시 이해를 못 해서 좀 애를 먹었다.
- 이건 그냥 더 많은 문제를 풀면서 많이 접해봐야 할 것 같다.
Solution
def divide(p):
if p == '':
return ''
left, right = 0, 0
u, v = 0, 0
for i in range(len(p)):
if p[i] == '(':
left += 1
else:
right += 1
if left == right:
u, v = p[:i + 1], p[i + 1:]
break
if is_right(u):
return u + divide(v)
else:
tmp = '('
tmp += divide(v)
tmp += ')'
u = u[1:-1]
for w in u:
if w == '(':
tmp += ')'
else:
tmp += '('
return tmp
def is_right(p):
cnt = 0
for w in p:
if w == '(':
cnt += 1
else:
cnt -= 1
if cnt < 0:
return False
if cnt == 0:
return True
else:
return False
def solution(p):
answer = divide(p)
return answer
Leave a comment