[java] 자바에서 Run-Length Encoding (RLE) 압축 알고리즘 사용하기

RLE(Run-Length Encoding)은 데이터를 압축하는 간단한 압축 알고리즘입니다. 이 알고리즘은 같은 값들이 연속으로 나타날 때, 값과 연속되는 횟수를 표현하여 데이터를 압축합니다.

예를 들어, 문자열 “AAABBBCCCC”을 RLE로 압축하면 “A3B3C4”와 같이 표현됩니다.

이제 자바에서 RLE 압축 알고리즘을 사용하는 방법을 알아보겠습니다.

예제 코드

public class RLECompression {
    public static String compress(String original) {
        StringBuilder compressed = new StringBuilder();

        int count = 1;
        for (int i = 1; i < original.length(); i++) {
            if (original.charAt(i) == original.charAt(i - 1)) {
                count++;
            } else {
                compressed.append(original.charAt(i - 1));
                compressed.append(count);
                count = 1;
            }
        }

        // 마지막 문자 처리
        compressed.append(original.charAt(original.length() - 1));
        compressed.append(count);

        return compressed.toString();
    }
}

public class Main {
    public static void main(String[] args) {
        String original = "AAABBBCCCC";
        String compressed = RLECompression.compress(original);
        System.out.println("Compressed String: " + compressed);
    }
}

위 예제 코드는 주어진 문자열을 RLE로 압축하는 compress 메소드를 포함하고 있습니다. compress 메소드는 주어진 문자열을 순회하면서 현재 문자와 이전 문자를 비교하여 압축된 문자열을 생성합니다. 마지막 문자까지 처리한 후, 최종 압축된 문자열을 반환합니다.

예제 코드의 Main 클래스에서는 주어진 문자열을 압축하여 출력하는 예시를 보여줍니다.

실행 결과

Compressed String: A3B3C4

참고 자료