/ PROGRAMING, PYTHON

문자열압축

문자열압축

기본적으로 ChatGPT를 이용하여 틀을 잡고 만든 것

문자열을 압축하는 문제로, 같은 문자가 반복되는 경우
그 반복되는 문자의 개수를 숫자로 표현하여 압축된 문자열을 출력해야 합니다.

문자열압축 1

문자열에서 같은 문자가 반복되는 경우
그 반복되는 문자의 개수를 숫자로 표현하여
압축한 문자열을 출력하는 함수 compress_string을 작성하세요.
예시: “aaabbcccc” → “a3b2c4”

def compress_string(s):
    result = ""
    count = 1
    
    for i in range(len(s)-1):
        if s[i] == s[i+1]:
            count+=1
        else:
            result += s[i]+str(count)
            count=1
    result += s[-1]+str(count)
    return result
        
s = "aaabbcccc"   
print(compress_string(s))
a3b2c4

문자열압축 2

문자열을 입력받아서 연속된 중복 문자열을 제거하고,
제거한 결과를 반환하는 remove_duplicates 함수를 작성하세요.

예를 들어, 문자열 “aabbccddeeff”를 입력받으면 “abcdef”를 반환해야 합니다.

제한 사항:
입력 문자열의 길이는 1000 이하입니다.
문자열은 알파벳 소문자로만 이루어져 있습니다.

def remove_duplicates(s):
    if not s:return ""
        
    result = ""
    
    for i in range(len(s)-1):
        if s[i]!=s[i+1]:
            result+=s[i]
    # 마지막 문자 추가
    result += s[-1]
    
    return result

s = "aabbccddeeff"
print(remove_duplicates(s))
abcdef
  • 알고리즘
    1. 문자열을 처음부터 순회하면서, 현재 문자와 이전 문자가 같은지 확인합니다.
    2. 같은 경우 중복 문자열에 추가하지 않고, 다른 경우 중복 문자열에 추가합니다.
    3. 마지막 중복문자는 추가되지 않으므로 추가해준다.
    4. 중복 문자열이 모두 추가되면 최종 결과 문자열에 이어붙입니다.