Algorithm(CodeTree, Python)/Simulation
[코드트리] 최단 Run Length 인코딩 Python
by kurooru
2023. 1. 17.
# a 입력
a = input()
# 함수들
# get_encoded_len(string)
def get_encoded_len(string):
# curr_cnt
curr_cnt = 1
# cnt_list
cnt_list = []
# 전체를 돌며,
for i in range(len(string) - 1):
# 다음 것과 같으면
if string[i] == string[i+1]:
# curr_cnt 올려주기
curr_cnt += 1
# 다음 것과 다르면
else:
# curr_cnt cnt_list에 추가 (문자열로)
cnt_list.append(str(curr_cnt))
# curr_cnt 초기화
curr_cnt = 1
# 마지막 cnt까지 추가 (문자열로)
cnt_list.append(str(curr_cnt))
# encoded_len
encoded_len = 0
# cnt_list를 돌며
for cnt in cnt_list:
# encoded_len에 추가
encoded_len += len(cnt) + 1
# 반환
return encoded_len
# get_RLE(shift)
def get_RLE(shift):
# shifted_a
shifted_a = a[-shift:] + a[:len(a) - shift]
# 인코딩
return get_encoded_len(shifted_a)
# 설계
# min_length
min_length = get_encoded_len(a)
# 완전 탐색 시작
for i in range(1, len(a)):
# min_length update
min_length = min(min_length, get_RLE(i))
# 출력
print(min_length)