💻 링크
https://school.programmers.co.kr/learn/courses/30/lessons/60057

📖 문제 해결
문자열 s의 길이가 n이라 하면, 1부터 n/2까지의 길이에 대해 문제에서 제시한 압축 변환 방법을 모두 적용해 본 후 압축하여 표현한 문자열 중 가장 짧은 것의 길이를 return 하도록 하는 완전 탐색 알고리즘을 사용하여 문제를 해결하였습니다. (n/2를 넘어가는 길이 단위로는 압축이 되지 않기 때문에 n/2까지의 길이에 대해서만 압축 변환을 하도록 하였습니다.)

def solution(s):
    
    # 길이가 1인 경우는 바로 1을 반환
    if len(s) == 1:
        return 1
    
    # 문자열을 압축한 결과를 담을 리스트
    result_list = []

    for n in range(1,len(s)//2 + 1):
        result = ''
        temp = []
        count = 1
        i = 0
        j = 1

		# 문자열을 n개 단위로 잘라서 리스트에 넣기
        while n * i <= (len(s)-1):
            temp.append(s[n*i:n*j])
            i += 1
            j += 1
		
        # 자른 문자열을 문제에서 제시한 대로 압축하여 표현하기
        for idx, string_ in enumerate(temp):

            if idx+1 <= (len(temp)-1) and temp[idx] == temp[idx+1]:
                count += 1
                continue

            if count >= 2:
                result += str(count)
                result += temp[idx]
                count = 1

            else:
                result += temp[idx]

        result_list.append(len(result))

	# 압축하여 표현한 문자열 중 가장 짧은 것의 길이를 return
    return min(result_list)
profile
AI를 공부하고 있는 학생입니다:)

0개의 댓글