문자열 my_string
과 정수 s
, e
가 매개변수로 주어질 때, my_string
에서 인덱스 s
부터 인덱스 e
까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.
function solution(my_string, s, e) {
var answer = '';
return answer;
}
solution("Progra21Sremm3", 6, 12);
function solution(my_string, s, e) {
let slicedString = my_string.slice(s, e +1)
let splitedArray = my_string.split(slicedString)
splitedArray.splice(1,0,slicedString.split("").reverse().join(""))
return splitedArray.join("")
}
solution("Progra21Sremm3", 6, 12);
s ~ e
에 해당하는 문자를 추출하고 해당 문자를 기준으로 my_string
을 잘라내고 배열로 만든다.21Sremm
를 기준으로 자르면 [Progra,3]
이렇게 됨.splice
로 1
번째에 reverse
뒤집어준 문자를 넣어주고 join("")
으로 텍스트화 해준다.❗️테스트 케이스는 다 통과하였지만, 반례가 존재했음
만약 같은 문자가 계속해서 반복되는 string
이라면 split
할 때 문제가 생김
반례 케이스 : solution("abcabcabc", 0, 2);
기대 결과: "cbaabcabc"
실행 결과: "cba"
function solution(my_string, s, e) {
const arr = [...my_string];
const reversedString = arr.slice(s, e + 1).reverse();
arr.splice(s, reversedString.length, reversedString);
return arr.flat().join("")
}
solution("abcabcabc", 0, 2);
my_string
을 배열화 하여 변수에 저장 (reverse
함수를 쓰기위함)s ~ e
만큼 잘라내고 뒤집어 준뒤 reversedString
변수에 저장.splice
활용해서 s ~ e
만큼 문자 삭제해주고 그 자리에 뒤집어준 reversedString
를 삽입arr
라는 배열에 reversedString
라는 배열이 또 들어가 있으니 flat()
을 활용하여 합치고 join("")
하여 문자열로 만들고 반환.