문제는 정말 써진 그대로만 풀면 되는 문제이다.
하지만 이게 이해하는데 애를 먹었다... ㅠㅜ 그대로 따라하기가 도데체 어떻게 하라는 건지
어려움을 겪었다.
우선
'균형잡힌 괄호 문자열' 과 '올바른 괄호 문자열'로 나누어 판단이 되는데 이걸 위해서 함수를 두개 선언해 주었다.
그리고 찬찬히 방법을 따라 갔다.
우선 처음에 u,v를 나누는 기준부터 이해가 잘 안갔는데, u는 더 이상 균형잡힌 문자열로 다시 나누어 질 수 없으므ㄴ로,
최소한의 균형잡힌 문자열로 하기 위해서 2개씩 끊어서 검사하였다.
이것만 제대로 해결하면 될 줄알았는데,
u,v 자체가 순서가 계속 햇갈려서 틀려왔다...ㅋㅋㅋ 처음에는 return을 '('+rl(u)+')'+v로 하고 그랬다가 틀려서 한참 고민했다..
차근 차근 따라 가면 해결 할 수 있었다...
def rstr(p):
if p =='':
return True
t = 0
for i in p:
if i =='(':
t+=1
elif i ==')':
t-=1
if t< 0 :
return False
if t == 0 :
return True
return False
def bstr(p):
return p.count('(')== p.count(')')
def rl(u):
a = ''
for i in u[1:-1]:
if i =='(':
a+=')'
if i == ')':
a+='('
print('a:',a)
return a
def solution(p):
if rstr(p):
return p
for i in range(2,len(p),2):
if bstr(p[:i]):
u = p[:i]
v = p[i:]
break
else:
u,v = p,''
if rstr(u):
v = solution(v)
return u+v
else :
return "("+solution(v)+")"+rl(u)
아.. 그리고 효율성때문에 재귀로 부르는거 안하려고 했는데..
문제 없길래 그냥 재귀로 썼다...
'코딩테스트 연습 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 숫자 야구 -파이썬 (0) | 2019.12.12 |
---|---|
[프로그래머스/코딩테스트 연습] 완전탐색 소수 찾기 (0) | 2019.12.10 |
[프로그래머스/코딩테스트 연습] [3차] 파일명 정리 (0) | 2019.12.03 |
[프로그래머스/코딩테스트 연습 ] [3차] n진수 게임 (0) | 2019.12.01 |
[프로그래머스/코딩테스트 연습] 쇠막대기 (0) | 2019.11.30 |