설명
알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는
문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오.
단 반복횟수가 1인 경우 생략합니다.
입력
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력
첫 줄에 압축된 문자열을 출력한다.
예시 입력 1
KKHSSSSSSSE
예시 출력 1
K2HS7E
예시 입력 2
KSTTTSEEKFKKKDJJGG
예시 출력 2
KST3SE2KFK3DJ2G2
제출1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine()+" ";
int lt =0, rt=1;
int count = 1;
while(rt!=str.length()){
if(str.charAt(lt) == str.charAt(rt)) count++;
else {
String result = (1 < count) ? String.valueOf(count) : "";
System.out.print(str.charAt(lt)+result);
lt = rt;
count =1;
}
rt++;
}
}
}
제출2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine()+ " ";
int sum = 1;
for(int i=0;i<str.length()-1;i++){
if(str.charAt(i) == str.charAt(i+1)){
sum++;
}else {
System.out.print(str.charAt(i));
if (sum > 1) {
System.out.print(sum);
}
sum=1;
}
}
}
}
결과

String str = br.readLine()+ " ";
입력받은 문자 마지막에 공백을 추가해야 for문이 마지막 문자까지 계산해서 출력을 한다.
for문에서 다음 문자가 현재 문자와 동일하면 개수만 세고 출력은 안하기 때문에, 반드시 다다음 문자까지 돌려야한다.
728x90