섹션 1. String 문자열 : 문자열 압축
문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 옆에 반복 횟수를 표기하여 출력
💻 강의 코드
class Algorithm {
public String solution(String s) {
String answer = "";
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);
}
cnt = 1;
}
}
return answer;
}
public static void main(String[] args){
Algorithm T = new Algorithm();
Scanner kb = new Scanner(System.in);
String s = kb.next();
System.out.println(T.solution(s));
}
}
💻 IntelliJ - Service
@Service
public class StringAlgorithmService{
public String stringShorter(String str) {
String answer = "";
// 끝까지 검색하기 위해서 str 뒤에 빈 문자 추가
str = str + " ";
int count = 1;
for (int i = 0; i < str.length()-1; i++) {
// 현재 문자와 그 다음 문자를 비교
if (str.charAt(i) == str.charAt(i + 1)) {
count++;
}else{
answer += str.charAt(i);
if (count > 1) {
answer += String.valueOf(count);
}
count = 1;
}
}
return answer;
}
}
@Test
@DisplayName("문자열 압축")
void stringShorter() {
String str = "KKHSSSSSSSEE";
String answer = stringAlgorithmService.stringShorter(str);
System.out.println("result ====> " + answer);
}
💻 결과

💻 NOTE
- String.valueOf() : String으로 형 변환
출처 : 인프런 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비