algorithm
문자열 압축
juuuuuuun
2024. 4. 29. 00:26
설명
알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는
문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오.
단 반복횟수가 1인 경우 생략합니다.
입력
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력
첫 줄에 압축된 문자열을 출력한다.
예시 입력 1
KKHSSSSSSSE
예시 출력 1
K2HS7E
예시 입력 2
KSTTTSEEKFKKKDJJGG
예시 출력 2
KST3SE2KFK3DJ2G2
소스 코드 1
import java.util.Scanner;
public class Main {
public static String solution(String str) {
String ans = "";
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (i == 0) {
ans += str.charAt(i);
} else {
if (str.charAt(i) == str.charAt(i - 1)) {
count++;
} else {
if (count != 0) {//ans에 숫자 추가
count++;
ans += Integer.toString(count);
count = 0;
}
ans += str.charAt(i);
}
}
}
count++;
ans += Integer.toString(count);
return ans;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
//if AAABCCCCDD -> A3BC4D2
System.out.println(solution(str));
}
}
소스 코드 2
import java.util.Scanner;
public class Main {
public static String solution(String str) {
String ans = "";
str += " ";
int count = 1;
for (int i = 0; i < str.length() - 1; i++) {
if (str.charAt(i) == str.charAt(i + 1)) {
count++;
} else {
ans += str.charAt(i);
if (count > 1) {
ans += String.valueOf(count);
}
count = 1;
}
}
return ans;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
//if AAABCCCCDD -> A3BC4D2
System.out.println(solution(str));
}
}