[프로그래머스/파이썬] Level 2 문자열 압축

bye9·2021년 3월 11일
0

알고리즘(코테)

목록 보기
91/130

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


알고리즘 분류

  • 브루트포스

문제풀이

cut은 문자열을 자르는 단위 개수를 의미하고 1부터 문자열의 절반까지 가능하다.
temp로 초기 비교값을 가지며, 문자열 전체를 정한 cut단위로 반복해서 확인하고자 하는 비교값과 같은지 확인하고 같으면 num값을 1 더해준다.

만약 다르다면 해당 cut로 자른 문자열을 만들기 위해 result에 더해나간다.

참고: https://ddouo.tistory.com/12

소스코드

def solution(s):
    length=[]
    result=""
    
    if len(s)==1:
        return 1
    for cut in range(1, len(s)//2+1):
        temp=s[:cut]
        num=1
        for i in range(cut, len(s), cut):
            if s[i:i+cut]==temp:
                num+=1
            else:
                if num==1:
                    num=""
                result+=str(num)+temp
                temp=s[i:i+cut]
                num=1
        if num==1:
            num=""
        result+=str(num)+temp
        length.append(len(result))
        result=""
    return min(length)

0개의 댓글