1. 문제
알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축
단, 반복횟수가 1인 경우 생략합니다.
2. 예시
KKHSSSSSSSE => K2HS7E
3. 코드
import java.util.Scanner;
/**문자열압축
* 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복
* ->문자바로 오른쪽에 횟수표기
* ->반복횟수가 1인 경우 생략
* ex) KKHSSSSSSSE -> K2HS7E
* */
public class Case11 {
public String solution(String str) {
StringBuilder ans = new StringBuilder();
str = str.toUpperCase() + " ";
int cnt = 1; // 카운트셀때
for (int i = 0; i < str.length() - 1; i++) {
if (str.charAt(i) == str.charAt(i + 1)) { // k == k cnt =2
cnt++;
//System.out.println("비교문자 : " + str.charAt(i) + " " + str.charAt(i + 1) + " cnt : " + cnt);
} else { // (1) k != h
ans.append(str.charAt(i)); // ans = k2
if (cnt > 1) {
ans.append(cnt);
}
cnt = 1;
//System.out.println(ans);
}
}
return ans.toString();
}
public static void main(String[] args) {
Case11 case11 = new Case11();
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(case11.solution(str));
}
}
4. 마무리
'알고리즘(Algorithm)' 카테고리의 다른 글
[Algorithm] 가장 짧은 문자의 거리 (0) | 2023.07.24 |
---|---|
[Algorithm] 숫자만 추출 (0) | 2023.07.19 |
[Algorithm] 팰린드롬 (0) | 2023.05.30 |
[Algorithm] 회문 문자열 (0) | 2023.04.03 |
[Algorithm] 중복문자제거 (0) | 2023.03.24 |