본문으로 바로가기

[알고리즘]문자열 압축

category Algorithm/String 2021. 10. 11. 07:43
728x90
반응형

▷ 문제

알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는

문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오.

단 반복횟수가 1인 경우 생략합니다.

* 입력

첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.

* 출력

첫 줄에 압축된 문자열을 출력한다.

▷ 입력 예시

KKHSSSSSSSE

▷ 출력 예시

K2HS7E

▷ 풀이

import java.util.Scanner;

public class Main {
    public String solution(String str){
        String answer = "";
        str = str + " ";
        int cnt = 1;

        for (int i = 0; i < str.length()-1; i++) {
            if (str.charAt(i) == str.charAt(i + 1)) {
                cnt++;
            } else {
                answer += str.charAt(i);
                if (cnt > 1) {
                    answer += String.valueOf(cnt);
                }
                cnt = 1;
            }

        }

        return answer;
    }

    public static void main(String[] args) {
        Main main = new Main();
        Scanner kb = new Scanner(System.in);
        String str = kb.next();

        System.out.println(main.solution(str));
    }
}

▷ 핵심 포인트

1. str = str + " "; 을 통해 문자열의 마지막 문자도 로직을 타도록 손 쉽게 처리할 수 있다.

반응형