문자열압축 코테
위 코테를 보면서 내가 오해한 몇가지 기재 하자면
#문자열의 길이(반절부터 시작)
str_len = len(s)/2
for sl in range(str_len,-1):
형식으로 문자열의 길이는 반에서 점점 줄어들어 1자리 까지 간다.
코테의 요건을 보면
입출력 예 #5
문자열은 제일 앞부터 정해진 길이만큼 잘라야 합니다.
따라서 주어진 문자열을 x / ababcdcd / ababcdcd 로 자르는 것은 불가능 합니다.
이 경우 어떻게 문자열을 잘라도 압축되지 않으므로 가장 짧은 길이는 17이 됩니다.
라는 조건이 있다.
즉 시작위치는 0으로 고정이다.
난 반대로 생각해서
for i in range(0,(len(s)-str_len))
s[i:str_len+i]
으로 생각 했다.
그럴 필요가 없어졌다.
그리고 생각 해야 하는 것은 남은 문자열에서 압축이다.
즉, s[0:temp_s] 에서 temp_s 줄어들어 0으로 될때, 0번의 위치의 값이랑 1번의 위치의 값이 같지 않으면 압축 불가능하다.
하지만 내생각에 오탈자 같은것이
입출력 예 #4
예#5에 의한 불능->문자열을 2개 단위로 자르면 "abcabcabcabc6de" 가 됩니다.
문자열을 3개 단위로 자르면 "4abcdededededede" 가 됩니다.
예#5에 의한 불능->문자열을 4개 단위로 자르면 "abcabcabcabc3dede" 가 됩니다.
문자열을 6개 단위로 자를 경우 "2abcabc2dedede"가 되며, 이때의 길이가 14로 가장 짧습니다
2개가 예#5에 의한 불능이 되야 정상이다.
그리고 1차 압축후 남은 문자열을 2차 압축을 한다.
이것도 마찬가지로 남은 문자열의 0번 위치에서 시작 안하면 불능이 떠야 한다.
나만 이해 못하고 못푸는거 같다. 상당히 짜증이 난다.