알고리즘 공부💥/프로그래머스

[프로그래머스] 카카오기출 / 문자열압축 / python

hyunsix 2021. 9. 9. 01:59

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

 

코딩테스트 연습 - 문자열 압축

데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문

programmers.co.kr

 

🤔문제접근

1. ( 1개 ~ 전체길이 나누기 2의 몫  )의 길이를 갖는 패턴을 완전탐색 비교해야한다.

2. 옆친구와 패턴이 같을 경우, 다를 경우를 분기하여 처리를 해준다.

3. i 길이의 패턴 비교를 적용한 temp_word라는 문자열을 도출한 다음 temp_word의 길이중 가장 작은 친구를 답으로 도출한다.

🌈코드구현

def solution(s):
    n = len(s)
    min_count = n
    if n == 1:
        return 1
    for i in range(1, n // 2 + 1):
        now_pattern = s[:i]
        count = 1
        temp_word = ''
        for j in range(i, len(s), i):
            target_pattern = s[j:j + i]
            if now_pattern != target_pattern:
                if count > 1:
                    sum_pattern = str(count) + now_pattern
                    temp_word += sum_pattern
                else:
                    temp_word += now_pattern

                now_pattern = target_pattern
                count = 1

            else:
                count += 1

        if count > 1:

            sum_pattern = str(count) + now_pattern
            temp_word += sum_pattern

        else:
            temp_word += now_pattern

        if min_count > len(temp_word):
            min_count = len(temp_word)

    return min_count