반응형
알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우
반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 알고리즘 문제
(반복횟수가 1인 경우 생략)
import java.util.Scanner;
public class Main {
public String solution(String s) {
String answer = "";
int cnt = 1;
// 맨뒤에 빈문자를 넣어야 마지막 문자가 대입가능
s = s + " ";
// 빈문자를 대입하였기 때문에 빈문자 전까지 for문이 돌게 해야함
for (int i = 0; i < s.length() - 1; i++) {
if (s.charAt(i) == s.charAt(i + 1)) cnt++;
else {
answer += s.charAt(i);
// 숫자가 1이 넘어가면 숫자도 대입
if (cnt > 1) answer += String.valueOf(cnt);
// 다시 1로 초기화
cnt = 1;
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(T.solution(str));
}
}
반응형
'Algorithm > Java알고리즘 문제풀이 & Kotlin' 카테고리의 다른 글
[Algorithm] 큰 수 출력하기 (0) | 2022.09.16 |
---|---|
[Algorithm] 암호 (0) | 2022.06.22 |
[Algorithm] 가장 짧은 문자거리 (0) | 2022.06.20 |
[Algorithm] 문장 속 단어 (0) | 2022.03.20 |
[Algorithm] 대소문자 변환 (0) | 2022.03.20 |