[프로그래머스] 문자열 여러 번 뒤집기

0
post-thumbnail

❔ [문제]

문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다. queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.

  • 제한사항
    • my_string은 영소문자로만 이루어져 있습니다.
    • 1 ≤ my_string의 길이 ≤ 1,000
    • queries의 원소는 [s, e]의 형태로 0 ≤ s ≤ e < my_string의 길이를 만족합니다.
    • 1 ≤ queries의 길이 ≤ 1,000


❕ [내 풀이]

function solution(my_string, queries) {
    var answer = '';

    for(let i = 0; i < queries.length; i++) {
        let str = my_string.substring(queries[i][0],queries[i][1]+1);
        let num = my_string.indexOf(str,queries[i][0])
        my_string = my_string.substring(0,queries[i][0]) + [...str].reverse().join('') 
+ my_string.substring(queries[i][1]+1);
    }
    return answer = my_string;
}

❕❕❕ [깔끔하다고 생각된 풀이]

function solution(my_string, queries) {
    let str = my_string.split('');
  queries.forEach(([start, end]) => {
    const changeStr = str.slice(start, end + 1);
    str.splice(start, changeStr.length, ...changeStr.reverse());
  });
  return str.join('');
}

splice 메소드 활용

0개의 댓글