한 걸음씩
[프로그래머스][JS] 문자열 여러 번 뒤집기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/181913
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(my_string, queries) {
let new_string = [...my_string.slice()]
for (let i = 0; i < queries.length; i++){
const [s, e] = queries[i]
// 인덱스 s부터 e까지 뒤집어라
new_string.splice(s, e - s + 1, ...new_string.slice(s, e + 1).reverse())
// console.log([s, e], new_string.join(''))
}
return new_string.join('');
}
// [ 2, 3 ] remrgorpsam
// [ 0, 7 ] progrmersam
// [ 5, 9 ] prograsremm
// [ 6, 10 ] programmers
splice부분만 설명해 보자면
new_string.splice(s, e - s + 1,... new_string.slice(s, e + 1). reverse())
's인덱스부터 e-s+1만큼 ... new_string.slice(s, e + 1). reverse() 잘라낸 배열로 대체해라'
e - s + 1인 이유는 [0, 7] 일 때, 뒤집어야 할 문자의 길이는 8이다. (0부터 7까지)
때문에 7 - 0 + 1 해야 원하는 값인 8을 얻게 된다.
스프레드를 사용한 이유는 스프레드를 하지 않으면 배열상태로 new_string에 들어가기 때문이다.
리뷰
이전에 수열과 구간 쿼리 문제를 풀었다면 흐름이 비슷해서 쉽게 풀 문제이다.
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 배열 만들기 6 (0) | 2023.06.13 |
---|---|
[프로그래머스][JS] 정사각형으로 만들기 (0) | 2023.06.13 |
[프로그래머스][JS] 두 수의 합 (0) | 2023.06.12 |
[프로그래머스][JS] 배열 만들기 4 (0) | 2023.06.12 |
[프로그래머스][JS] 2의 영역 (0) | 2023.06.12 |