[문자열 압축]
2024. 11. 27. 20:19ㆍ카테고리 없음

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringBuilder sb = new StringBuilder();
//charAt(i) = charAt(i+1) 같으면
for(int i=0; i <=str.length();i++){
sb.append(str.charAt(i));
if(i==str.length()-1){
break;
}else{
if(str.charAt(i) == str.charAt(i+1)) {
int repeatedCount =1;
while(str.charAt(i) == str.charAt(i+1)){
repeatedCount++;
i++;
}
sb.append(repeatedCount);
}
}
}
System.out.println(sb);
}
public static void main(String[] args) throws Exception{
new Main().solution();
}
}
-> 이렇게 실했했더니 런타임 에러가 뜸
조금 더 간단한 방식을 생각해 봐야 한다!

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringBuilder sb = new StringBuilder();
int cnt=1;
for(int i=0; i < str.length()-1;i++){
if(str.charAt(i)==str.charAt(i+1)) cnt++;
else {
sb.append(str.charAt(i));
if(cnt>1) sb.append(String.valueOf(cnt));
}
}
System.out.println(sb);
}
public static void main(String[] args) throws Exception{
new Main().solution();
}
}