본문으로 바로가기

[JAVA]String11.문자열 압축

category 코딩테스트/basic 2022. 5. 24. 02:13

설명

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

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

 

입력

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

 

출력

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

 

 풀이
import java.util.Scanner;
class Main {
	
	public String solution(String str ) {

		String answer = "";
		str = str + " ";
		int p = 1;
	
		for(int i = 0; i <str.length()-1; i++) {
			if(str.charAt(i) == str.charAt(i+1)) {
				p++;
			} else {
				answer += str.charAt(i);
				if(p > 1) answer += String.valueOf(p);
					p = 1;
			}
		}
		return answer;
 
 
}
	public static void main(String[] args){
		Main t = new Main();
		Scanner sc = new Scanner(System.in);
		String str =  sc.nextLine();
		System.out.println(t.solution(str));
	}
}
 

1) str.charAt(i) == str.charAt(i+1)

-> 마지막 인덱스(10) 비교 위해, str = str + " "; (문자열 + 문자열)

 

2) String.valueOf() : String 형변환

- null 또한 String 값으로 출력