문자열 압축

developsy·2022년 7월 3일
0

https://programmers.co.kr/learn/courses/30/lessons/60057

처음 문제를 봤을 때는 좀 어려워 보였는데 천천히 구현해보니 별 이상 없이 풀 수 있었다. 다만 주석에도 있듯이 파이썬에서 문자열에 길이를 넘어가는 인덱스를 주면 에러 없이 문자열의 끝까지만 리턴하는 것을 까먹고 있다가 약간 삽질을 했는데, 다음부터는 기억하고 있어야겠다.

+문제를 더 많이 풀어서 구현 속도를 높일 필요가 있는 듯

#p323

#1부터 1씩 증가시키면서 문자열 자르기
#문자열은 인덱스 넘어가도 문자열의 끝까지만 리턴하지 인덱스 에러가 발생하지 않는다. 다른 언어면 최대 단어길이랑 인덱스랑 빼서
#적절히 조절해야 할 듯


def solution(s):
    #p323
    string = s
    num = []
    for i in range(1, len(string)+1):
        idx = 0
        count = 1
        result = ''
        #만약 i만큼 자른 문자열이 반복되면 그 수 * i만큼 인덱스 idx를 증가시키고 result에 적절히 문자 더함
        while idx < len(string):
            if string[idx:idx+i] == string[idx+i:idx + 2 * i]:
                count += 1
                idx += i
            else:
                if count > 1:
                    result += str(count) + string[idx:idx+i]
                    idx += i
                else:
                    result += string[idx:idx+i]
                    idx += i
                count = 1
        num.append(len(result))
    
    answer = 0
    answer = (min(num))
    return answer
profile
공부 정리용 블로그

0개의 댓글