🧑🏻💻 문제링크
스택
문제 중에서 가장 대표적인 올바른 괄호나 팰린드롬과 같이 스택을 이용하여 균형이 맞는지 확인할 수 있는 방법만 알면 푸는데 크게 어렵지 않은 문제인 것 같다. 문제에서 이렇게
변환 과정을 알려주기 때문에 저 지문에 따라서 코드를 작성하기만 하면 된다.
# 문자열 u, v로 분리
def divide(w):
temp = ''
for i in range(len(w)):
temp = w[:i+1]
left = temp.count('(')
right = temp.count(')')
if left == right:
u = temp
v = w[i+1:]
return (u, v)
# 균형잡힌 괄호인지 체크
def isBalanced(u):
stack = []
for i in u:
if i == '(':
stack.append(i)
else:
if not stack:
return False
stack.pop()
return True
def solution(p):
answer = ''
w = p
# 과정 1
if w == '':
return ''
# 과정 2
u, v = divide(w)
# 과정 3
if isBalanced(u):
# 과정 3-1
u += solution(v)
return u
# 과정 4
else:
# 과정 4-1
temp = '('
# 과정 4-2
v = solution(v)
# 과정 4-3
temp += v + ')'
# 과정 4-4
for s in u[1:-1]:
if s == '(':
temp += ')'
else:
temp += '('
return temp