카테고리 없음
[파이썬] 문자열 압축 - 2020 KAKAO BLIND RECRUITMENT[CODING TEST #55]
ALTERww
2022. 8. 17. 01:40
320x100
https://school.programmers.co.kr/learn/courses/30/lessons/60057
문자열 s의 절반에 해당하는 길이까지 문자열 압축 단위를 반복하여
조건에 맞게 새로운 문자열을 완성하고, 가장 짧은 문자열의 길이를 갱신하여 반환하도록 하면 된다.
pattern을 구하는 과정에서, len(s)가 1일 때는 len(s)//2 + 1 = 1이 되어 range(1,1)은 내부 코드가 실행되지 않는다.
따라서 len(s)//2 + 2만큼 반복하도록 하였다.
def solution(s):
answer = 987654321
for i in range(1,len(s)//2 + 2): # len(s) == 1인 경우를 대비, +1 대신 +2
pattern = s[:i]
new_s = ''
count = 1
for split in range(i,len(s)+1,i):
if pattern == s[split:split+i]: # pattern과 같은 단어를 만났다면
count += 1
else: # 다를 때
if count == 1: # 1회 반복되면 숫자 X
new_s += pattern
else: # 2회 이상 반복되면 숫자 포함
new_s = new_s + str(count) + pattern
# count, pattern 초기화
count = 1
pattern = s[split:split+i]
answer = min(answer, len(new_s)+len(s) % i)
return answer