
코딩테스트 연습 > 코딩 기초 트레이닝
문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
my_string와 overwrite_string은 숫자와 알파벳으로 이루어져 있습니다.overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000my_string의 길이 - overwrite_string의 길이| my_string | overwrite_string | s | result |
|---|---|---|---|
| "He11oWor1d" | "lloWorl" | 2 | "HelloWorld" |
| "Program29b8UYP" | "merS123" | 7 | "ProgrammerS123" |
내가 작성한 코드는 채점 시 테스트 6번에서 지속적으로 실패가 나타났다. 찾아보니, my_string에 같은 단어가 여러번 나올 경우 replace로 처리했을 때 원하지 않는 부분까지 바뀌게 되기 때문이라고 한다.
위와 같은 반례에서 replace를 사용 시, 기댓값을 만족하지 못하고 "bbbbbb"가 출력될 것이다.
// 나의 풀이
const solution = (my_string, overwrite_string, s) => {
let answer = '';
let replace_string = '';
let length = overwrite_string.length;
replace_string = my_string.substr(s, length);
answer = my_string.replace(replace_string, overwrite_string);
return answer;
}
// 다른 사람의 풀이 참고
const solution = (my_string, overwrite_string, s) => {
let front_string = my_string.slice(0, s);
let back_string = my_string.slice(s + overwrite_string.length);
return front_string + overwrite_string + back_string;
}
slice("시작 위치", "종료 위치") 또는 slice("시작 위치")
slice() 함수는 기본적인 사용법은 substring() 함수와 동일하며, 다른 점은 음수(-)를 자유롭게 사용할 수 있어서 뒤에서부터 문자열을 자를 때 유용하게 사용할 수 있다.