본문 바로가기
DC 2

[자료구조] 문자열 압축 사본 파이썬 (👍)

by YGSEO 2021. 4. 23.
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

댓글