
문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다. queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.
my_string은 영소문자로만 이루어져 있습니다.my_string의 길이 ≤ 1,000queries의 원소는 [s, e]의 형태로 0 ≤ s ≤ e < my_string의 길이를 만족합니다.queries의 길이 ≤ 1,000| my_string | queries | result |
|---|---|---|
| "rermgorpsam" | [[2, 3], [0, 7], [5, 9], [6, 10]] | "programmers" |
my_string은 "rermgorpsam"이고 주어진 queries를 순서대로 처리하면 다음과 같습니다.|queries|my_string|
|---|---|
||"rermgorpsam"|
|[2, 3]|"remrgorpsam"|
|[0, 7]|"progrmersam"|
|[5, 9]|"prograsremm"|
|[6, 10]|"programmers"|
따라서 "programmers"를 return 합니다.
function solution(my_string, queries) {
let str = [...my_string]; // 문자열을 배열로 변환
queries.forEach(([start, end]) => {
// 주어진 구간을 뒤집고 배열에 반영
const reversedPart = str.slice(start, end + 1).reverse();
str.splice(start, reversedPart.length, ...reversedPart);
});
return str.join(""); // 배열을 문자열로 변환하여 반환
}
let str = [...my_string];
...를 사용해 문자열의 각 문자를 배열의 요소로 변환.my_string = "rermgorpsam"str = ["r", "e", "r", "m", "g", "o", "r", "p", "s", "a", "m"].queries.forEach(([start, end]) => {
const reversedPart = str.slice(start, end + 1).reverse();
str.splice(start, reversedPart.length, ...reversedPart);
});
쿼리를 순회하며 처리:
forEach를 사용하여 queries 배열의 각 [start, end] 구간을 순서대로 처리.start와 end는 뒤집어야 할 구간의 시작과 끝 인덱스를 의미.구간 추출 및 뒤집기:
const reversedPart = str.slice(start, end + 1).reverse();
slice(start, end + 1):start부터 end까지의 구간을 잘라냄.start = 2, end = 3 → str.slice(2, 4) = ["r", "m"].reverse():["r", "m"] → ["m", "r"].구간 교체:
str.splice(start, reversedPart.length, ...reversedPart);
splice(start, length, ...reversedPart):start부터 length만큼의 요소를 제거하고, reversedPart로 교체.start = 2, reversedPart = ["m", "r"] → str.splice(2, 2, "m", "r").return str.join("");
join("")을 사용하여 배열의 요소를 공백 없이 결합.my_string = "rermgorpsam";
queries = [[2, 3], [0, 7], [5, 9], [6, 10]];
str = ["r", "e", "r", "m", "g", "o", "r", "p", "s", "a", "m"].["r", "m"] → 뒤집기: ["m", "r"].["r", "e", "m", "r", "g", "o", "r", "p", "s", "a", "m"].["r", "e", "m", "r", "g", "o", "r", "p"] → 뒤집기: ["p", "r", "o", "g", "r", "m", "e", "r"].["p", "r", "o", "g", "r", "m", "e", "r", "s", "a", "m"].["m", "e", "r", "s", "a"] → 뒤집기: ["a", "s", "r", "e", "m"].["p", "r", "o", "g", "r", "a", "s", "r", "e", "m", "m"].["s", "r", "e", "m", "m"] → 뒤집기: ["m", "m", "e", "r", "s"].["p", "r", "o", "g", "r", "a", "m", "m", "e", "r", "s"]."programmers".