Algorithm/inflearn

문자열 압축

마닐라 2021. 9. 6. 17:07

import java.util.Scanner;

class Main {
    public String solution(String s) {
        String answer = "";

        s=s + " "; //마지막 문자 때문에 빈 문자열 삽입

        int cnt = 1;

        for(int i = 0; i < s.length()-1; i++) {
            if(s.charAt(i) == s.charAt(i+1)) cnt++;
                else {
                    //문자를 더해라
                    answer += s.charAt(i);
                    if(cnt > 1) answer += String.valueOf(cnt);
                    cnt=1;
                }
                //입력 문자열 KKHSSSSSSSE -> K2HS7E
                //0일 때는 cnt만 증가 
                //1일 때는 해당 문자(K)와 숫자(2) 삽입 (K2) 그리고 다시 cnt = 1로 초기화 
                //2일 때는 해당 문자만 삽입(H)
                //3,4,5,6,7,8까지 num이 더해져서 7이 됨
                //9일 때는 S와 E 다르므로 해당 문자(S)와 숫자(7) 삽입 다시 cnt = 1로 초기화
                //10일 때는 마지막 문자이므로 빈 문자열과 비교하여 해당 문자만 삽입 (E)
        }


        return answer;
    }

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

        String str = kb.next();

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