프로그래머스 - 문자열 겹쳐쓰기 - js (splice 사용법)

2023. 7. 24. 17:22Study_Develop/알고리즘 | 코딩테스트

반응형

프로그래머스 - 문자열 겹쳐쓰기 - js 

 

문제

 

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

제한 사항

 

- my_string와 overwrite_string은 숫자와 알파벳으로 이루어져 있습니다.
- 1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000
- 0 ≤ s ≤ my_string의 길이 - overwrite_string의 길이

 

입출력 예

 

my_string overwrite_string s result
"He11oWor1d" "lloWorl" 2 "HelloWorld"
"Program29b8UYP" "merS123" 7 "ProgrammerS123"

 

입출력 예 설명 #1

 예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에 해당하는 부분은 "11oWor1"이고 이를 "lloWorl"로 바꾼 "HelloWorld"를 return 합니다.

 

입출력 예 설명 #2

 예제 2번의 my_string에서 인덱스 7부터 overwrite_string의 길이만큼에 해당하는 부분은 "29b8UYP"이고 이를 "merS123"로 바꾼 "ProgrammerS123"를 return 합니다.

 

solution.js
function solution(my_string, overwrite_string, s) {
     const myStr = [...my_string]
    myStr.splice(s, overwrite_string.length, overwrite_string)
    return myStr.join("")
}

 

해설

- my_string을 문자의 배열로 변환

 

- 인덱스 s 에서 시작하는 부분 문자열을 overwrite_string으로 대체 ( .length의 길이에 해당하는 만큼)

 

- 수정된 배열을 다시 문자열로 결합하고 반환

 

 

splice()

splice()를 사용해 배열 요소 제거하고 새로 추가하기란?

 

splice는 요소를 삭제하는 동시에 바로 새 요소를 추가할 수 있다!

// 필수 매개변수와 선택적 매개변수가 포함된 splice() 문법 
Array.splice(start, deleteCount, newItem, newItem, newItem, ...)
let months = ["January", "February", "Monday", "Tuesday"];
let days = months.splice(2, 2, "March", "April"); // 요소 두 개를 제외하고, 다른 요소를 추가

console.log(days); // ["Monday", "Tuesday"]
console.log(months); // ["January", "February", "March", "April"]

- > months배열에 March와 April을 추가하면서 Monday와 Tuesday를 제거하는 방법

 

 

요소를 제거하지 않고 새 배열 요소 추가하기

let months = ["January", "February", "Monday", "Tuesday"];
months.splice(2, 0, "March"); // 두 번째 매개변수가 0이므로 기존 요소 모두 유지

console.log(months); 
// ["January", "February", "March", "Monday", "Tuesday"]

-> 마지막으로 숫자 0을 deleteCount 매개변수에 전달하여 기존 요소를 삭제하지 않고도 새 요소를 추가할 수 있다. 요소가 제거되지 않을 경우 빈 배열이 반환되며, 경우에 따라 반환된 빈 배열을 변수에 저장해서 사용할 수 있다.

다음 예시에서는 기존 요소를 삭제하지 않고 "February" 요소 옆에 새 요소 "March"를 추가하는 것을 보여준다. 앞서 언급한 것처럼 반환되는 값이 빈 배열이므로 이를 별도로 저장하지 않아도 된다.