def solution(s):
answer = s[:]
# le: 압축할 길이
for le in range(1,len(s)//2+1):
result = ''
cnt = 1
# 현재 문자열과 다음 문자열을 비교해서
for st in range(0,len(s),le):
# 같으면 cnt만 증가
if s[st:st+le]==s[st+le:st+2*le]:
cnt += 1
# 다르면 현재까지 압축한 결과 붙이기
else:
if cnt>1:
result += (str(cnt)+s[st:st+le])
else:
result += s[st:st+le]
cnt = 1
if len(result)<len(answer):
answer = result[:]
return len(answer)
- 현재 문자열과 다음 문자열을 비교해서 같으면 cnt 증가시키고 다르면 현재까지 압축한 결과를 붙이기
- 마지막 문자열도 예외없이 붙일 수 있음
- 마지막 문자열이면
s[st+le:st+2*le]
이''
이므로 무조건else
로 넘어감- 마지막 문자열이 전 문자열과 같았다면
result += (str(cnt)+s[st:st+le])
이 실행될 것이고, 다르더라도result += s[st:st+le]
가 실행되므로 마지막 문자열 붙일 수 있다.
처음에 answer을 엉뚱하게 a*1001로 초기화해서 테스트5가 통과하지 않았다.
힌트를 보고 어디를 잘못짰는지 금방 찾을 수 있었지만, 실전이었다면 엄청 헤맸을 것 같다.