<Programmers> 문자열 겹쳐쓰기

·2025년 4월 15일
0

프로그래머스

목록 보기
18/18
post-thumbnail

문제

문자열 my_string, overwrite_string과 정수 s가 주어집니다.
문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

✅ 제한사항
1️⃣ my_stringoverwrite_string은 숫자와 알파벳으로 이루어져 있습니다.
2️⃣ 1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000
3️⃣ 0 ≤ s ≤ my_string의 길이 - overwrite_string의 길이

function solution(my_string, overwrite_string, s) {
 // console.log("my_string.slice(0, s): ", my_string.slice(0, s));
 // console.log("overwrite_string: ", overwrite_string);
 // console.log(
 //   "my_string.slice(s + overwrite_string.length): ",
 //   my_string.slice(s + overwrite_string.length)
 // );
 return (
   my_string.slice(0, s) +
   overwrite_string +
   my_string.slice(s + overwrite_string.length)
 );
}

solution("He11oWor1d", "lloWorl", 2); // "HelloWorld"
// solution("Program29b8UYP", "merS123", 7); // "ProgrammerS123"
// solution("aaaaaa", "bbb", 3); // "aaabbb"

문제 풀이

핵심: slice 메서드를 사용하여 중간값 갈아끼우기

처음엔 replace로 문제에 접근했다가, case 6에서 계속 틀렸다.
반례로 solution("aaaaaa", "bbb", 3);을 실행했을 때, 기대값이 나오지 않는 것을 확인하고 replace로는 답을 낼 수 없겠다 판단했다.

slice 메서드를 활용하여 썩은 부분 도려내듯 내가 변경할 부분 직전과 이후 값을 구하여 문자열을 갈아끼우는 방식으로 해결할 수 있었다.

정리

  1. 문자열 중간값을 갈아끼울 때, slice 메서드 활용하기 꽤 괜찮다. (splice보다 slice가 더 빠름)
profile
- 배움에는 끝이 없다.

0개의 댓글