문자열 뒤집기
문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.
제한 사항
- 1 ≤ my_string의 길이 ≤ 1,000
입출력 예
my_string | return |
---|---|
”jaron" | "noraj" |
"bread" | "daerb” |
입출력 예 설명
입출력 예 #1
my_string
이 “jaron”이므로 거꾸로 뒤집은 “noraj”를 return합니다.
입출력 예 #2
my_string
이 “bread”이므로 거꾸로 뒤집은 “daerb”를 return합니다.
문제풀이 (나)
function solution(my_string) {
let answer = '';
let array = my_string.split('');
const limit = Math.floor(array.length / 2);
for (let i = 0; i < limit; i ++) {
array = reversalValue(i, array);
}
array.forEach((item) => answer += item);
return answer;
}
function reversalValue(i, array) {
let temp = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = temp;
return array;
}
- 간단하게 할 방법이 따로 기억나지 않았다. 그래서 원시적인 방법으로 문제를 풀었다.
- 우선 split 메서드로 텍스트를 하나하나 쪼개주었다.
- reversalValue 이라고 시작값 인덱스와 배열을 넣어주면 매칭되는 종료값 인덱스와 값을 서로 반전 시키는 함수를 만들었다.
- 이제 시작값 인덱스를 구해줄 for문을 돌려주면 되는데, 조건이 있었다. 내가 생각했던 조건은 다음과 같다.
- for문은 배열의 전체 크기의 절반까지만 돌려준다.
- 단, 배열의 전체 크기가 홀수라면 2로 나눈 몫까지만 for문을 돌려준다.
- 마지막은 문자열을 합쳤다.
- join 메서드가 기억이 안났다…
- 문자열을 합친 answer 변수를 리턴하여 마무리.
문제풀이 (다른사람)
function solution(my_string) {
var answer = [...my_string].reverse().join("");
return answer;
}
- 가장 많은 좋아요를 받은 사람의 풀이를 가져왔다.
- 스프레드 문법으로 구조분해
- 스프레드 : 배열이나 문자열과 같이 **반복이 가능한 문자를 0개 이상의 인수(파라미터, 함수로 호출시) 또는 요소(배열 리터럴의 경우)**로 확장 가능
- 즉, 문자열을 전개하게 되면 각각 쪼개져 전개된다.
- reverse() 메서드를 사용해 반전
reverse()
는 배열의 순서를 반전한다.
- join(””) 메서드로 텍스트를 병합
join()
메서드는 배열의 모든 요소를 연결해 하나의 문자열로 만든다.