[알고리즘] 01.String / 11.문자열 압축

less than 1 minute read

문자열 압축

설명

알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오.
단 반복횟수가 1인 경우 생략합니다.

입력

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

출력

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

예시 입력 1

KKHSSSSSSSE

예시 출력 1

K2HS7E

예시 입력 2

KSTTTSEEKFKKKDJJGG

예시 출력 2

KST3SE2KFK3DJ2G2

코드

import java.util.Scanner;
public class JC_0111 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JC_0111 T = new JC_0111();
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		System.out.print(T.solution(str));
	}

	//KKHSSSSSSSE
	//KSTTTSEEKFKKKDJJGG
	public String solution(String str) {

		String answer = str.charAt(0)+"";
		char c = str.charAt(0); //비교할 대상
		int count = 1; //카운트

		for(int i=1; i<str.length(); i++) {
			if(c == str.charAt(i)) { //같으면
				count++;
				c = str.charAt(i);
			}else { //다르면
				if(count != 1) {
					answer += count;
				}
				count = 1;
				c = str.charAt(i);
				answer += c;
			}
		}
		//마지막 비교대상
		if(count != 1) {
			answer += count;
		}

		return answer;
	}
}