🧩 알고리즘
[프로그래머스 Lv.2] 문자열 압축 - Python
yeonDev
2022. 6. 22. 18:40
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
POINT
반복되는 변수 파악하기
k개로 문자를 자를 때, 앞의 문자(prev_str)와 뒤의 문자(curr_str)의 index 값이 어떻게 변하는가?
예외 처리
- 문자 길이가 1일 때는 정답이 1이다.
참고
- 문자 길이를 초과하는 인덱스를 입력하면, 아무것도 나오지 않는다 (에러가 발생하진 않는다).
str = "aabbaccc"
print(str[8:9]) #
풀이
def solution(s):
# (예외) 문자 길이가 1인 경우
if (len(s) == 1): return 1
answer = [] # 압축한 문자의 길이를 담은 배열
for k in range(1, len(s)//2 + 1): # 전체 문자 길이의 반까지만 자르기
new_str = "" # 압축 문자
count = 1
for i in range(0, len(s), k):
prev_str = s[i : i+k]
curr_str = s[i+k : i+2*k]
if (prev_str == curr_str): count += 1
else:
if (count > 1):
new_str += (str(count) + prev_str)
else: new_str += prev_str
count = 1 # 초기화
answer.append(len(new_str))
return min(answer)