알고리즘/프로그래머스문제풀이

[Python/프로그래머스]문자열 압축

개발자 덕구🐾 2022. 6. 28. 08:42
728x90

 

 

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

 

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

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

programmers.co.kr

 

 

 


 

새롭게 알게된것 :

문자열에서 범위를 넘어서는 슬라이싱을 해도 에러가 안난다. 그저 있는 만큼 잘 잘릴 뿐 

 

 

for문이 len(s)+i까지인 이유는

끝까지 압축이 가능할 경우 b에 추가가 안되고 cnt만 올라가기 때문에

+i를 해주어 현재 있는 cnt와 tmp를 b에 추가하기 위해서이다. 

 

 

 

코드 : 

def solution(s):
    result=[]
    # 한글자 일때는 한글자를 반환 
    if len(s)==1:
        return 1
    # 1글자부터 총길이까지 압축길이가 될  수 있다. 
    for i in range(1, len(s)+1):
        b = ''
        cnt = 1
        tmp=s[:i]
	
        for j in range(i, len(s)+i, i):
            # 압축 가능 
            if tmp==s[j:i+j]:
                cnt+=1
            # 압축 불가능 
            else:
            	# 압축을 해봤음 
                if cnt!=1:
                    b = b + str(cnt)+tmp
                # 압축을 안해봤음 
                else:
                    b = b + tmp
                # 다시 압축 문자열 재설정 
                tmp=s[j:j+i]
                cnt = 1
        result.append(len(b))
    return min(result)

 

 

 

사실 왜 +i가 되는지 이해가 안가서 물어봤다.

감사합니다!!

 

 

 

 

참고 블로그 : 

https://ljhyunstory.tistory.com/18

 

코딩테스트 --- 문자열 압축-(프로그래머스 / 파이썬)

https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데.

ljhyunstory.tistory.com

 

복습 : 

20220630

🐾 20221013

반응형