프로그래머스 - 문자열 압축

최대 1 분 소요

프로그래머스(kakao 2019) - 문자열 압축

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

해결방법

요구사항을 하나씩 이행해서 구현하면 풀리는 문제

입력으로 주어지는 문자열의 길이가 1,000 이하이므로 가능한 모든 경우의 수를 탐색하는 완전 탐색 방법으로 수행하면 된다.

문자열을 자를 수 있는 최대의 크기는 문자열/2 이고,

나머지는 요구사항에 맞춰서 배열을 인덱스별로 나타내기만 하면 되는 문제

def solution(s):
    answer = len(s)
    check_size = int(len(s)/2)+1
    for i in range(1,check_size):
        count = 1
        len_check = []
        times = 0
        for j in range(i,len(s),i):
            times += 1
            if  s[j-i:j] == s[j:j+i]:
                count += 1
                if (len(s)-1) // i == times:
                    len_check.append(str(count))
                    len_check.append(s[j:j+i])
                    count = 1
            elif count == 1 and s[j:j+i] != s[j-i:j]:
                len_check.append(s[j-i:j])
                if (len(s)-1) // i == times:
                    len_check.append(s[j:j+i])
            elif count > 1 and s[j:j+i] != s[j-i:j]:
                len_check.append(str(count))
                len_check.append(s[j-i:j])
                count = 1
                if (len(s)-1) // i == times:
                    len_check.append(s[j:j+i])
        res = "".join(len_check)
        answer = min(answer, len(res))
    return answer

댓글남기기