[JS] 문자열 뒤집기 programmers

0

코딩테스트

목록 보기
70/80
post-thumbnail

🎀 문제

문자열 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);
  1. s ~ e에 해당하는 문자를 추출하고 해당 문자를 기준으로 my_string을 잘라내고 배열로 만든다.
    ex) 추출문자 21Sremm를 기준으로 자르면 [Progra,3] 이렇게 됨.
  2. splice1번째에 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);
  1. my_string을 배열화 하여 변수에 저장 (reverse 함수를 쓰기위함)
  2. s ~ e 만큼 잘라내고 뒤집어 준뒤 reversedString변수에 저장.
  3. splice 활용해서 s ~ e 만큼 문자 삭제해주고 그 자리에 뒤집어준 reversedString를 삽입
  4. arr라는 배열에 reversedString라는 배열이 또 들어가 있으니 flat()을 활용하여 합치고 join("")하여 문자열로 만들고 반환.
profile
일단 해. 그리고 잘 되면 잘 된 거, 잘 못되면 그냥 해본 거!

0개의 댓글