문제는 위 링크에서 확인 바란다.
def divie(s, answer):
first = s[0]
same = 0
notsame = 0
for i, e in enumerate(s):
if e == first:
same += 1
else:
notsame += 1
if same == notsame and len(s) >= 2 and i != len(s)-1:
answer =+ divie(s[i + 1:], answer)
return answer + 1
return answer
def solution(s):
answer = 0
return divie(s, answer)
초반에는 재귀적으로 풀이하면 쉬울거 같아서 위와 같이 구현했다 하지만 재귀적으로 들어가면 역시 런타임이 놓아 진다. 따라서 이를 피해기 위해서 다시 O(n)으로 변경했다.
def solution(s):
f = s[0]
count = 0
diff = 0
same = 0
for i, e in enumerate(s):
if e == f:
same += 1
else:
diff += 1
if same == diff and i+1 != len(s):
count += 1
f = s[i+1]
diff = 0
same = 0
return count+1
반복문을 한번만 수행하게 만드니 오류가 나지 않았다.