Python/[코드트리]

[코드트리] 문자열 순회하기 > Run Length 인코딩

hyunnn_00 2023. 7. 3. 17:23
문자열 A가 주어졌을 때 문자열 A에 Run-Length Encoding을 적용한 이후의 결과를 구해보려고 합니다. Run-Length Encoding이란 간단한 비손실 압축 방식으로, 연속해서 나온 문자와 연속해서 나온 개수로 나타내는 방식입니다.

예를 들어, 문자열 A가 aaabbbbcbb인 경우 순서대로 a가 3번, b가 4번, c가 1번 그리고 b가 2번 나왔으므로 Run-Length Encoding을 적용하게 되면 a3b4c1b2가 됩니다.

문자열 A가 주어졌을 때, Run-Length Encoding을 적용한 이후의 결과를 출력하는 프로그램을 작성해보세요.

 

 

 

 

# 변수 선언 및 입력:
A = input()

# 변환
encoded = ""

# 입력의 첫번째 값을 읽고 초기화합니다.
curr_char = A[0]
num_char = 1
for traget_char in A[1:]:
    if traget_char == curr_char:
        # 지금까지의 문자와 같으면 연속된 문자 개수만 추가해 주고 넘어갑니다.
        num_char += 1
    else:
        # 지금까지의 문자와 다르면 새로운 문자로 바꿔줘야 합니다.
        # 지금까지 세어온 curr_char와 num_char를 기록합니다.
        encoded += curr_char
        encoded += str(num_char)

        # curr_char와 num_char를 현재 값으로 초기화합니다.
        curr_char = traget_char
        num_char = 1
    
# 마지막 덩어리에 해당하는 curr_char와 num_char를 기록합니다.
encoded += curr_char
encoded += str(num_char)

print(len(encoded))
print(encoded)

# 나의 풀이 ------a = input()
cnt = 1
res = ""

for i in range(1, len(a)):
    if a[i] == a[i-1]:
        cnt += 1
    else:
        res += a[i-1] + str(cnt)
        cnt = 1
res += a[-1] + str(cnt)

leng = len(res)

print(leng)
print(res)----------------------------