자바 문자열 코테 문제를 풀다가 해당 에러가 났다
검색을 해보니 지정한 값에서 범위를 벗어나면 해당 에러가 난다고 한다
public class reMain11 {
public static String solution(String str){
String answer ="";
int num=1;
for (int i=0; i<str.length(); i++){
if (str.charAt(i) == str.charAt(i+1)){
num++;
answer += str.charAt(i)+num;
}else{
answer += str.charAt(i);
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(solution(str));
}
}
public class Main11 {
public static String solution(String str){
String answer = "";
str = str+" "; // 빈공간을 넣어준다 out-of-range 에러
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); //문자열 변환
cnt=1; //초기화
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(solution(str));
}
}
- 먼저 문자열에 빈 공간을 추가해준다
str+" ";
- for 문의 길이를
str.length()-1
만큼 빈공간 전까지 돌도록 범위를 지정한다
- 그냥 범위를 length()-1로 하면 안되나?
-> 그럼 마지막 문자는 수행할 수 없음