Written by
최태열
on
on
[Python][프로그래머스][Level2] 문자열압축
[Python][프로그래머스][Level2] 문자열압축
코드
def alzip(num,s):
div=[]
for n in range(len(s)//num):
div.append(s[n*num:n*num+num])
else:
if s[(n+1)*num:]:
div.append(s[(n+1)*num:])
div.append("")
check,answer="",""
cnt=1
for i in div:
if i==check:
cnt+=1
else:
answer+= check if cnt==1 else str(cnt)+check
check=i
cnt=1
return len(answer)
def solution(s):
answer=[]
for i in range(len(s)//2):
answer.append(alzip(i+1,s))
return min(answer) if answer else 1
압축을 할 수 있는 단위는 1에서 문자열 길이의 절반이다.
단위별로 문자열을 나누고 가장 마지막 단위도 포함해서 문장을 완성하도록 ““을 하나 넣어준다.
같으면 cnt를 1 더하고 아니면 cnt가 1이 아닐때 같이 포함해서 문자열에 집어넣었다.
그렇게 나온 문자열 길이중 가장 작은 값을 return하면 된다.
문자열의 길이가 1일 경우에는 for문에 들어가지 않기 때문에 따로 경우를 나눠준다.
Discussion and feedback