[go] 문자열에서 연속된 문자 압축

이번 포스트에서는 Go 언어를 사용하여 문자열에서 연속된 문자를 압축하는 방법에 대해 알아보겠습니다.

연속된 문자 압축 알고리즘

연속된 문자를 압축하는 간단한 알고리즘은 문자열을 순회하면서 현재 문자이전 문자를 비교하여 같은 경우에는 카운트를 증가시키고, 다른 경우에는 카운트와 이전 문자를 결과 문자열에 추가하는 방식입니다.

예를 들어, “aaabbcccccca” 문자열을 압축하면 “a3b2c6a1”과 같이 압축할 수 있습니다.

Go로 연속된 문자 압축 구현하기

package main

import (
    "fmt"
    "strconv"
)

func compressString(s string) string {
    if len(s) == 0 {
        return ""
    }

    compressed := ""
    count := 1

    for i := 1; i < len(s); i++ {
        if s[i] == s[i-1] {
            count++
        } else {
            compressed += string(s[i-1]) + strconv.Itoa(count)
            count = 1
        }
    }

    compressed += string(s[len(s)-1]) + strconv.Itoa(count)

    return compressed
}

func main() {
    input := "aaabbcccccca"
    result := compressString(input)
    fmt.Println("Compressed string:", result)
}

위 코드에서 compressString 함수는 주어진 문자열을 입력으로 받아 압축된 문자열을 반환합니다. main 함수에서는 예제 문자열을 압축하여 결과를 출력합니다.

마치며

이렇게 Go 언어를 사용하여 문자열에서 연속된 문자를 압축하는 방법을 알아보았습니다. 앞으로 이를 응용하여 다양한 문자열 처리 알고리즘을 구현해볼 수 있을 것입니다.

더 자세한 내용은 여기에서 Go 언어에 대해 더 많이 알아볼 수 있습니다.