보혀니 2021. 10. 18. 22:00

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

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

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

 

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

 

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

 

예시 :

KKHSSSSSE

예시출력 :

K2HS5E

 

 

import java.util.Scanner;

public class Main {
	public void solution() {
		String answer = "";
		String s = "KKHSSSSE";
		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); // answer += cnt;
					// 굳이 String.valueOf를 사용한게 이유가 있을까?
					cnt = 1;
				}
			}
		}
		System.out.println(answer);
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
//		char s = kb.next().charAt(0);
//		String str = kb.next();

		T.solution();

	}

}

 

문자열을 char[]로 바꾸고, 크기는 문자열 사이즈 +1로 해서 물려고 했음.

암튼 그러다가 막힘ㅠ

String에 " " 을 더해주는것도 방법이구나..

 

반복문이 지저분해지는 것에 대한 불편함 불안감이 있음

소심해짐. else에다가 또 if 넣어도 되려나? 이런 소심하고 찐따같은 생각을 했음.

이런 생각 좀 버려야겠다.

 

 

KKHSSSSE 에 대한 결과