티스토리 뷰
📌문제
https://school.programmers.co.kr/learn/courses/30/lessons/60057
📌풀이
길이가 N인 문자열 입력되었다면 1부터 N/2까지의 모든 수를 단위로 하여 문자열을 압축하는 방법을 모두 확인하고 가장 짧게 압축되는 길이 출력
📌코드
def solution(s):
answer = len(s)
#1개 단위부터 압축 단위를 늘려가며 확인
for step in range(1, len(s)//2+1):
compressed=""
prev=s[0:step] #앞에서부터 step만큼 추출
count=1 #압축 횟수
#단위 크기만큼 증가시키며 이전 문자열과 비교
for j in range(step, len(s), step):
#이전 문자열과 동일하다면 압축 횟수 증가
if prev==s[j:j+step]:
count+=1
#문자열이 다르다면
else:
compressed+=str(count)+prev if count>=2 else prev
prev=s[j:j+step] #상태 초기화
count=1
#남아있는 문자열에 대한 처리
compressed +=str(count)+prev if count>=2 else prev
#만들어지는 압축 문자열이 가장 짧은 것이 정답
answer=min(answer, len(compressed))
return answer
📌참고