본문 바로가기
프로그래머스/2단계

(Python/LV2) 문자열 압축

by windy7271 2022. 11. 4.
728x90
반응형

문제 출처:https://school.programmers.co.kr/learn/courses/30/lessons/60057

풀이: 

 

첫 풀이:

def solution(s):
    list = []
    for i in range(1, len(s) // 2+ 1):
        res = ''
        count = 1
        slice = s[:i]
        for j in range(i, len(s)+i, i):
            if slice == s[j:i+j]:
                count += 1
            else:
                if count == 1:
                    res += slice
                else:
                    res += str(count) + slice
                slice = s[j:j+i]
                count = 1
        list.append(len(res))
    return min(list)
    
1개 틀림

 

 

if len(s) == 1:
    return 1
    
맨위에 추가 하니 100

 

 

 

for i in range(1, len(s) // 2+ 1):
    res = ''
    count = 1
    slice = s[:i]

자르는 단위 1부터 절반까지 자르면 된다

slice 는 뒤에 자른 단위숫자만큼 비슷한지 비교하려고 slice에 넣음 

 

for j in range(i, len(s)+i, i):
    if slice == s[j:i+j]:
        count += 1

두번째 포문으로 

slice 와 다음 자른것을 비교한다. (i만큼 격차를 두고)

 

같으면 count +=1 

다른데 count = 1이면 그대로 slice 를 res에추가

다르면서 count가 있으면 4ab 이런식으로 넣어줘야하니 str(count) + slice

 

앞에 같은 4ab 넣어주고 다른 지금꺼를 slice에 넣어주고 count = 1 초기화

지금꺼를 넣어야 다음 for문으로 돌아올때 가능,

 

반응형

댓글