
* 문제 풀이
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = "";
String str = my_string.substring(s, s+overwrite_string.length());
return answer = my_string.replace(str, overwrite_string);
}
}
처음에 이 코드로 실행했는데 테스트 6에서 실패가 떴다.
질문하기 보니까 반례가
입력값 〉 "aaaaaa", "bbb", 3
기댓값 〉 "aaabbb"
str이 aaa라서 replace 때문에 a가 다 b로 바뀌어서 실패.
흠 그럼 어케 하냐
검색해보니까 자른 후에 앞뒤 붙이기를 주로 하길래 나도 그렇게 했다.
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = "";
String str1 = my_string.substring(0, s); //인덱스 0부터 s 전까지의 문자열 추출
String str2 = my_string.substring(s + overwrite_string.length());
// overwrite_string 이후부터 끝까지
return answer = str1 + overwrite_string + str2 ;
}
}
문제풀이 성공!
* 프로그래머스 다른 풀이
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
char[] my_chars = my_string.toCharArray();
char[] overwrite_chars = overwrite_string.toCharArray();
for (int i=0; i<overwrite_chars.length; i++) {
my_chars[s + i] = overwrite_chars[i];
}
return String.valueOf(my_chars);
}
}
좋은 코드래
char[] my_chars = my_string.toCharArray();
char[] overwrite_chars = overwrite_string.toCharArray();
문자열을 문자 배열로 변환하여 직접 인덱스로 값을 수정할 수 있다.
for (int i = 0; i < overwrite_chars.length; i++) {
my_chars[s + i] = overwrite_chars[i];
}
my_chars의 s번째부터 overwrite_chars를 한 글자씩 덮어쓴다.
return String.valueOf(my_chars);
수정된 문자 배열을 다시 문자열로 변환 후 반환
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = my_string.substring(0, s) + overwrite_string;
if(my_string.length() > answer.length()) {
answer += my_string.substring(answer.length());
}
return answer;
}
}
'코테 > 프로그래머스 JAVA Lv.0' 카테고리의 다른 글
| [프로그래머스/java/Lv.0] 조건 문자열 (0) | 2025.05.20 |
|---|---|
| [프로그래머스/java] 문자열 섞기 (0) | 2025.05.19 |
| [프로그래머스/java] 문자열의 뒤의 n글자 (0) | 2025.05.18 |
| [프로그래머스/java/Lv.0] 원소들의 곱과 합 (0) | 2025.05.04 |
| [프로그래머스/java/Lv.0] 문자열 돌리기 (0) | 2025.04.24 |