https://programmers.co.kr/learn/courses/30/lessons/60058
괄호 '('와 ')'로 이루어진 문자열 p가 주어집니다.
'(' 와 ')' 의 개수가 같다면 이 문자열은 균형잡힌 문자열이라고 부르고
()의 중첩으로 이루어진, 아다리가 잘 맞아떨어지는 문자열을 올바른 문자열이라고 부릅니다.
문자열 p는 균형잡힌 문자열입니다. 우리가 친절하게 재귀적으로 p를 올바른 문자열로 만드는 방법을 알려줄 테니 너는 코딩만 하세요.
2020하반기 카카오 공채에서 풀었던 1번 문제 유형을 떠올려보면...
정말 디테일하게 어떻게 해야하는지 알려주고 그걸 코드로 그냥 옮기기만 하면 됐다.
같은 유형임이 눈에 띄어서 최대한 설명을 베낀다 생각하고 짰다.
균형잡힌 문자열
def rev(s):
for i in range(len(s)):
if s[i]=='(':
s[i] = ')'
else:
s[i] = '('
return s
def rec(s,d):
if s ==[]:
return []
stck =0
is_corr = True
for i in range(len(s)):
if s[i] == '(':
stck+=1
else:
stck-=1
if stck < 0:#음수로 떨어진 적이 있다면 올바르지 u가 올바르지 않아서임
is_corr = False
if stck ==0:
u = s[0:i+1]
v = s[i+1:]
print("".join(u),"".join(v))
if is_corr:
#print(rec(v,d+1))
return u + rec(v,d+1)
else:
return ['('] + rec(v,d+1)+[')']+rev(u[1:-1])
def solution(p):
answer = ''
answer = "".join(rec(list(p),0))
return answer