[Algorithm]프로그래머스 알고리즘 문제풀이

2024-01-28

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

function solution(my_string, overwrite_string, s) {
  let answer = [...my_string];
  answer.splice(s, overwrite_string.length, overwrite_string);
  return answer.join("");
}

문제풀이

이 문제는 전개연산자와, splice함수, join함수를 이용하여 풀어보았다.

전개 연산자(Spread Operator)

전개연산자는 문자열(string)이나 배열(array)같은 이터러블(iterable) 객체에서 각 요소를 개별적으로 추출하여 새로운 배열에 담아주는 자바스크립트 문법이다.

문자열(Stirng)의 경우

let str = "hello";
let result = [...str];
// ['h','e','l','l','o']

배열(Array)의 경우 : 배열복사

let arr = ["hello", "world"];
let result = [...arr];
// ['hello', 'world']

배열(Array)의 경우 : 배열 합치기

let arr = ['hello'
let newArr = ['world']
let result = [...arr, ...newArr]
// ['hello', 'world']

풀이에 적용된 코드

let answer = [...my_string]
//  [
  'H', 'e', '1', '1',
  'o', 'W', 'o', 'r',
  '1', 'd'
]

splice 함수 (Array.prototype.splice())

splice함수는 배열을 변경하는 매소드 중 하나로, 배열의 내용을 삭제하거나 새로운 요소를 추가할 수 있다.

array.splice(start, deleteCount, item1, item2, ...);
  • start : 배열에서 수정을 시작하는 index
  • deleteCount : 해당 인덱스부터 삭제할 요소의 개수
  • item1, item2 : 해당 인덱스 자리에 추가할 요소

풀이에 적용된 코드

function solution(my_string, overwrite_string, s) {
  let answer = [...my_string];
  answer.splice(s, overwrite_string.length, overwrite_string);
  return answer.join("");
  // [ 'H', 'e', 'lloWorl', 'd' ]
}

answer배열에서 s번째 index부터 overwrite_string.length의 길이만큼 삭제되고 그 부분에 overwrite_string을 넣어준다.

join 함수 (Array.prototype.join())

join함수는 배열의 모든 요소를 하나의 문자열로 결합하는 메소드이다.

let fruits = ["apple", "orange", "banana"];

let resultWithComma = fruits.join();
console.log(resultWithComma); // "apple,orange,banana"

let resultWithSpace = fruits.join(" ");
console.log(resultWithSpace); // "apple orange banana"

let resultWithDash = fruits.join("-");
console.log(resultWithDash); // "apple-orange-banana"

let resultWithoutSpace = fruits.join("");
console.log(resultWithoutSpace); //  "appleorangebanana"

풀이에 적용된 코드

function solution(my_string, overwrite_string, s) {
  let answer = [...my_string];
  answer.splice(s, overwrite_string.length, overwrite_string);
  return answer.join("");
  // "HelloWorld"
}