728x90
def solution(s):
if len(s) == 1:
return 1
res = []
cut_range = list(range(1, (len(s)//2)+1))
ans = ""
for cut in cut_range:
tmp = s[:cut]
cnt = 1
for i in range(cut, len(s), cut):
if tmp == s[i:i+cut]:
cnt += 1
else:
if cnt == 1:
cnt = ""
ans += str(cnt) + tmp
cnt = 1
tmp = s[i:i+cut]
if cnt == 1:
cnt = ""
ans += str(cnt) + tmp
res.append(len(ans))
ans = ""
return min(res)
저번에도 한번 도전했었는데
이번에도 역시 재구현은 실패했다.
틀린부분은
- 두번째 for loop에서 cut size만큼 range하는 부분
- tmp 설정할때 s[i:i+cut]
- else 문에서 cnt == 1일 경우 못찾았기 때문에 whitespace로 만들어 주는 부분
- cut size로 loop 돌고 난 후 남아있는 cnt, tmp (마지막까지 찾은 경우) 처리 해 주는 부분도 생각해야 한다.
맞은 부분
- 초기화 시키는 부분
- 탐색은 절반까지만
좋은 문제 인듯 👍
728x90
'DC 2' 카테고리의 다른 글
[자료구조] FloodFill 파이썬 (BFS, queue) (0) | 2021.04.23 |
---|---|
[자료구조] 배달 파이썬 (BFS, queue, Dijkstra, heap) (0) | 2021.04.23 |
[자료구조] 주사위 게임 파이썬 (product) (0) | 2021.04.23 |
[자료구조] 사전순 부분문자열 파이썬 (0) | 2021.04.23 |
[자료구조] 짝지어 제거하기 파이썬 (stack, valid pair) (0) | 2021.04.22 |
댓글