문제
https://school.programmers.co.kr/learn/courses/30/lessons/181913
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
개념
문자열, 구현
실행 결과
구현 코드(JavaScript)
function solution(my_string, queries) {
let arr = my_string.split("");
// 쿼리 s-e만큼 반복
for (let [s, e] of queries) {
// s-e만큼 자르고 뒤집기
let sub = arr.slice(s, e + 1).reverse();
// 원래 배열에 s+i부터 다시 삽입
for (let i = 0; i < sub.length; i++) {
arr[s + i] = sub[i];
}
}
return arr.join("");
}
코드 설명
먼저 쿼리는 여러개의 배열로 구성되어 있다.
각 배열은 순서를 뒤집어서 배치해야할 시작 인덱스와 끝 인덱스가 들어있다.
일단 입력 받은 문자열(my_string)을 문자별로 쪼개서 arr라는 배열에 삽입한다.
시작 인덱스에서 끝 인덱스를 뒤집을 때는 반복문을 중첩으로 사용하지말고, reverse 함수를 사용하면 간단하게 구현할 수 있다. 이 뒤집은 문자열을 sub라고 정의하면 다음과 같이 작성할 수 있다.
let sub = arr.slice(s, e + 1).reverse();
slice를 이용해 구간을 나누고 reverse로 뒤집은 문자열이다.
이제 이 문자열을 다시 원래 문자열에 넣어야 한다.
// 원래 배열에 s+i부터 다시 삽입
for (let i = 0; i < sub.length; i++) {
arr[s + i] = sub[i];
}
다시 삽입할때는 arr에 있던 위치 그대로 넣어야한다.
이때 arr 인덱스는 i에 시작인덱스를 더한 값임을 명심하자.
'PS' 카테고리의 다른 글
[백준] Fly me to the Alpha Centauri (0) | 2024.10.17 |
---|---|
[프로그래머스] 타겟 넘버 (0) | 2024.10.12 |
[프로그래머스] 주사위 게임 3 (1) | 2024.10.09 |
[백준] 10830번: 행렬 제곱 (0) | 2024.10.08 |
[백준] 2178번: 미로 탐색 (0) | 2024.10.01 |