👩‍💻 코테 공부/코테 공부

[코테 - py] 문자열 압축

수댕ʕت̫͡ʔ 2024. 7. 27. 23:02

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

이 문제는 문자열 문제로 어렵지는 않았지만, 내가 복잡하게 푼 것같다.

코드를 간결하고 시간복잡도가 낮게 푸는 방법을 키우는 연습을 해야할 것같다.

 

def solution(s):
    answer = 0    
    temp  = 1
    result = 1e9
    for i in range(1, len(s)+1):
        data = []
        for j in range(0, len(s), i):
            data.append(s[j:j+temp])

        te = ""
        co = 0
        tt = 0
        for j in range(len(data)):      
            if j == 0:
                te = data[j]
                co += 1
            else:
                if (data[j] == te):
                    co+= 1                 
                else:               
                    if co == 1:
                        tt += len(str(te))
                    else:
                        tt += (len(str(co)) + len(te))                
                    te = data[j]
                    co = 1
        if co == 1:
            tt += len(str(te))
        else:
            tt += (len(str(co)) + len(te))
        result = min(tt, result)

        temp+=1

    return result

 

- 나는 문자열의 길이만 담아서 최솟값을 비교해줬다. 문자열 자체를 담으면 메모리가 낭비되기 때문!