일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Nextjs
- 타입스크립트
- 노드js
- 노드
- 에러
- Array
- Reduce
- 코딩테스트
- 마음커넥션
- slice
- codingtest
- Javascript
- 노드제이에스
- node
- Method
- 자바스크립트
- 앵귤러
- react
- TypeScript
- 프로그래머스
- 백엔드
- error
- indexOf
- nodejs
- 코딩테스트연습
- npm
- CLI
- Programmers
- 개발
- angular
- Today
- Total
Suzie's Blog
[프로그래머스] 문자열 뒤집기(JavaScript) 본문
문제 설명
문자열 my_string과 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- my_string은 숫자와 알파벳으로만 이루어져 있습니다.
- 1 ≤ my_string의 길이 ≤ 1,000
- 0 ≤ s ≤ e < my_string의 길이
입출력 예
my_string s e result "Progra21Sremm3" 6 12 "ProgrammerS123" "Stanley1yelnatS" 4 10 "Stanley1yelnatS"
입출력 예 설명
입출력 예 #1
- 예제 1번의 my_string에서 인덱스 6부터 인덱스 12까지를 뒤집은 문자열은 "ProgrammerS123"이므로 "ProgrammerS123"를 return 합니다.
입출력 예 #2
- 예제 2번의 my_string에서 인덱스 4부터 인덱스 10까지를 뒤집으면 원래 문자열과 같은 "Stanley1yelnatS"이므로 "Stanley1yelnatS"를 return 합니다.
내가 해결한 방법 (?)
function solution(my_string, s, e) {
const stringArray = [...my_string];
const reversedPortion = stringArray.slice(s,e+1).reverse();
stringArray.splice(s, e-s+1, ...reversedPortion);
return stringArray.join('')
}
사실 방법을 찾지 못해서 Chat GPT의 도움을 받아서 풀었다

splice에 원하는 글자 reverse까지 완성했는데 도무지 글자 사이에 변화한 글자를 넣는것을 어떻게 해야할지 몰랐음..
일단 chatGPT에 따르면
1. string을 array에 넣어준다. 나는 두가지 방법을 알고있는데 첫번째 방법은 배열안에 spread문법으로 string변수를 써주는 것 :
const stringArray = [...my_string];
두번째 방법은 split() 메서드를 사용하는 것이다.
const stringArray = my_string.split('')
나는 첫번째 방법을 사용했다.
2. slice()를 이용하여 배열을 자르고 reverse()를 이용해서 배열의 순서를 뒤집어준다.
여기까지는 잘 알았었다.
3. splice()를 사용해서 원하는 자리에 2번을 넣어준다.
내가 splice()메서드 문법을 잘 몰라서 mdn을 다시 찾아보았다.
Array.prototype.splice()
The splice() method of Array instances changes the contents of an array by removing or replacing existing elements and/or adding new elements in place.
배열에 존재하는 요소를 제거하거나 교체 또는 추가하여 배열을 바꾸는 메서드!
이 문제에 딱 필요했었다
항상 slice()와 splice()가 헷갈렸었는데 오늘 문제를 풀어보며 splice의 역할이 정확히 뭔지 또 알아간다

stringArray.splice(s, e-s+1, ...reversedPortion);
위의 코드를 해석하자면, stringArray에서 e-s+1개의 요소를 교체한다 index s 자리에 ...reversedPortion을 넣어준다.
stringArray = [ 'P', 'r', 'o', 'g', 'r', 'a', '2', '1', 'S', 'r', 'e', 'm', 'm', '3' ]
//index s = 6 ('2'가 들어있는 자리)
//e-s+1 === 12-6+1 === 7 (7개의 요소를 교체)
//결과값은 아래와 같다
stringArray = [ 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'e', 'r', 'S', '1', '2', '3' ]
더 쉽게 이해하기 위해 예시를 만들어 봤다. 아래를 참고!
const num = [1,2,3,4,5]
const num2 = [9,9]
num.splice(2, 2, ...num2)
console.log(num)
// result = [ 1, 2, 9, 9, 5 ]
2번째 인덱스에서부터 2가지 요소를 교체, 그래서 결과값을 보면 num의 2번째 index와 3번째 index가 바뀐것을 확인할 수 있다.
4. 어쨋든 아까 splice결과값으로 나온 stringArray를 join('')메서드를 활용하여 다시 스트링으로 만들어주면 끝!

'개발 > 코딩테스트' 카테고리의 다른 글
[프로그래머스]특정 문자열로 끝나는 가장 긴 부분 문자열 찾기(JavaScript) (feat. lastIndexOf) (0) | 2023.11.21 |
---|---|
[프로그래머스] 문자열이 몇 번 등장하는지 세기(JavaScript) (0) | 2023.11.17 |
[프로그래머스] 수열과 구간 쿼리1 (JavaScript) (0) | 2023.10.25 |
[프로그래머스] 등차수열의 특정한 항만 더하기 (JavaScript) (0) | 2023.10.24 |
[프로그래머스] 문자열 돌리기(JavaScript) (2) | 2023.10.19 |