알고리즘 문제/PROGRAMMERS
[2020 kakao blind] 괄호변환
이융희
2021. 8. 12. 14:27
728x90
괄호 맞추기 문제로 stack 개념을 사용하여 풀었다
요점은 다음 함수 2개를 잘 구현하면된다.
1. 올바른 괄호쌍을 검사하는 함수
2. u, v로 나누어 규칙에 맞게 처리하는 함수
def compact(p):
stack = []
for x in p:
if x == '(':
stack.append('(')
else:
if not stack:
return False
stack.pop()
return True
def seperate(p):
if not p:
return p
l, r = '', ''
if p[0] == '(':
l, r = '(', ')'
else:
l, r = ')', '('
stack = []
idx = 0
for i, x in enumerate(p):
if x == l:
stack.append(x)
else:
idx = i
break
for i, x in enumerate(p[idx:]):
if x == l:
stack.append(x)
else:
stack.pop()
if not stack:
idx = idx + i + 1
break
u, v = p[:idx], p[idx:]
if compact(u):
return u + seperate(v)
else:
temp = '(' + seperate(v) + ')'
for x in u[1:len(u)-1]:
if x == '(':
temp += ')'
else:
temp += '('
return temp
def solution(p):
answer = ''
answer = seperate(p)
return answer