궁금한게 많은 코린이의 Developer 노트

[TIL] 프로그래머스 문자열 겹쳐쓰기 본문

TIL

[TIL] 프로그래머스 문자열 겹쳐쓰기

lemonarr🍋 2024. 2. 7. 12:47

 

나의 문제풀이

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

 

 

1. 기존의 문자열을 [...]을 사용하여 배열로 만들어준다.

2. splice()문법을 사용하여 배열을 새로 반환한다:

my_Arr의 s 부터 바꿔준다, overwrite_string.length만큼 배열을 삭제하고,

overwrite_string 으로 비워진 부분을 새로운 배열로 채운다.

 

 

 

 

[ splice() 메소드 ] -다목적으로 사용가능: 삭제.추가.기존값 대체

 

-배열 객체에 사용가능한 내장 메서드임. (※ 문자열일 경우 배열로 바꿔줘야함)

-기존 요소를 삭제하거나 추가 교체하여 배열의 내용을 변경한다.(기존 요소를 삭제하지 않아도 가능하다.)

-제거된 요소가 담긴 별도의 배열을 새로 반환한다.(= 원본 배열을 건드린다.)

 

splice( start,deleteCount,item0,item1,item2...)

-start : 배열의 변경을 시작할 인덱스를 지정

-deleteCount( removeCount ): 배열에서 제거할 요소의 수.

-item: 배열에 추가할 요소. 이 값을 전달하지 않으면 제거하는 역할만 함.

 

 

 

 

[ slice() 메소드 ]

 

slice( start-Index, end-Index )

splice() 메서드와 달리 아무리 많이 호출해도 원본 배열의 값은 절대 건드리지 않는다.

->원본 배열이 그대로 보존되어야 하는 상황에서 유용하게 사용됨.

 

-start-Index, end-Index : 시작 인덱스부터 종료 인덱스까지 복사하여 반환한다,

배열로부터 특정 범위를 복사한 값들을 담고 있는 새로운 배열을 만드는데 사용.

 

 

 

 

 


 

 

 

다른사람의 문제풀이

function solution(my_string, overwrite_string, s) {    
    return my_string.slice(0,s)+overwrite_string+my_string.slice(s+overwrite_string.length);
}

 

 

문제풀이: slice()를 사용하여 특정 범위의 문자열을 복사하고 필요한 인덱스 부분만큼만 복사해서

새로운 문자열을 만들어냄.

 

처음 범위부터의 배열 복사( "He11oWor1d" )+overwrite_string("lloWorl")+my_string.slice(8);

 

0부터 s까지의 문자열을 복사하고..("He")+("lloWorl")+(d) 이런 문자열이 만들어지게 된다.