11. 문자열 압축
알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우
반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램
입력) 첫 줄에 문자열이 주어집니다.
출력) 첫 줄에 압축된 문자열을 출력합니다.
1.
import java.util.Scanner;
public class Main {
public static String solution(String str) {
String answer = "";
str = str + " "; // 문자열 끝에 빈 문자 추가
int cnt = 1;
for (int i=0; i<str.length()-1; i++) {
if (str.charAt(i)==str.charAt(i+1)) cnt++;
else {
answer += str.charAt(i);
if (cnt>1) answer += String.valueOf(cnt); // Integer.toString(cnt)로 해도 됨
cnt = 1; // 1로 초기화
}
}
return answer;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(solution(str));
}
}
2.
import java.util.Scanner;
public class Main {
public static String solution(String str) {
String answer = "";
int repeat = 0;
char c = str.charAt(0); // 맨처음 문자
answer += str.charAt(0); // 맨처음 문자 누적
for (int i=0; i<str.length(); i++) {
if (str.charAt(i)==c) repeat++;
else {
c = str.charAt(i); // 새로운 문자
if (repeat>1) answer += repeat; // 반복 횟수 누적
answer += str.charAt(i); // 새로운 문자 누적
repeat = 1; // 1로 초기화
}
}
if (repeat>1) answer += repeat; // 마지막 문자의 반복 횟수 누적
return answer;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(solution(str));
}
}
결과
입력
HELLOGOOOODDAYYY
출력
HEL2OGO4D2AY3
댓글