[코테] 문자열 - 문자열 압축[프로그래머스]

Bpius·2023년 6월 7일
0

알고리즘 문제풀이

목록 보기
17/28
post-thumbnail

문제:

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

풀이

문자를 압축할 때 문자를 1개 단위부터 문자열 전체의 반까지 압축할 수 있는 경우의 수를 모두 탐색하여 가장 짧은 문자열을 반환하면 된다.
2중 반복문을 이용하여 문자길이 1부터 문자 전체길이의 반까지 바깥 반복문을 통해 문자의 길이를 정하고, 안쪽 반복문은 문자의 길이만큼 이동하며 끝까지 탐색하여 문자열이 반복이 되는지 확인한다. 이 때 변수 하나를 선언하여 문자열이 반복이 된다면 압축한 것을 변수에 더해주고 압축이 되지 않는다면 그대로 변수에 더해준다.
이렇게 반복하여 모두 변수에 추가를 하여 이중에서 가장 짧은 문자열의 길이를 반환하면 된다.

코드

def solution(s):
    result = []
    minN = len(s)

    for i in range(1, len(s) // 2 + 1):
        cnt = 1 # 문자열 압축 횟수
        answer = ''

        for j in range(0, len(s), i):
            if s[j:j + i] == s[j + i:j + i + i]:
                cnt += 1
            else:
                if cnt > 1:
                    answer += (str(cnt) + s[j:j + i]) # 압축한 것을 변수에 더한다.
                    cnt = 1 # 압축 다시 초기화
                else:
                    answer += s[j:j + i] # 압축이 안된다면 그대로 변수에 더하도록 한다.

        result.append(answer) # 문자열 길이를 1부터 전체의 반까지 정한 길이를 모두 추가

    for n in result:
        if len(n) != 0 and len(n) < minN:
            minN = len(n)

    return minN
profile
데이터 굽는 타자기

0개의 댓글