class replaceTest {
public static String replaceTest(String my_string, String overwrite_string, int s){
String answer = "";
int a = my_string.length() - overwrite_string.length();
int last_id= a-s;
if(last_id<0){
answer = my_string.substring(s,overwrite_string.length()+a);
my_string = my_string.replace(answer, overwrite_string);
}
else {
answer = my_string.substring(s,overwrite_string.length()+s);
my_string = my_string.replace(answer, overwrite_string);
}
answer = my_string;
System.out.println(answer);
return answer;
}
public static void main(String[] args){
replaceTest("He11oWor1d", "lloWorl",2);
replaceTest("Program29b8UYP", "merS123", 7);
replaceTest("sujin123", "kim",5);
}
}
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String before = my_string.substring(0, s);
String after = my_string.substring(s + overwrite_string.length());
return before + overwrite_string + after;
}
}
주어진 s는 첫번째 인덱스가 아니다. 대체할 overwrite_string이 my_string의 s번째 인덱스부터 마지막 인덱스까지의 부분 문자열과 크기가 같지 않을 수 있다.
1. my_string과 overwrite_string의 길이 차를 구한다.-> int a
2. 마지막 인덱스 번호를 알기 위해 a와 s의 차를 구한다. ->int last_id
String.substring으로 문자열의 인덱스 사용
- 내 문제가 테스트 6을 통과하지 못했는데 이유는 모르겠다..ㅠㅠ
- 다른 분의 풀이를 참고하니 내가 문제를 너무 효율적으로 작성하지 못했다는 것을 알게 되었다.
나는 대체될 부분을 제외한 나머지 부분을 그대로 붙이기 위해 문자열의 차를 이용하였는데, 위 풀이는 s와 overwrite_string의 길이를 더하여 나머지 부분을 구현하였다.- 프로그래머스가 작성한 초안을 그대로 쓸 필요는 없다!
풀이 참고