logo
Posts
문자열 뒤집기

문자열 뒤집기

문제 설명

문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.

제한 사항

  • 1 ≤ my_string의 길이 ≤ 1,000

입출력 예

my_stringreturn
"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;
}
  • 간단하게 할 방법이 따로 기억나지 않았다. 그래서 원시적인 방법으로 문제를 풀었다.
  1. 우선 split 메서드로 텍스트를 하나하나 쪼개주었다.
  2. reversalValue 이라고 시작값 인덱스와 배열을 넣어주면 매칭되는 종료값 인덱스와 값을 서로 반전 시키는 함수를 만들었다.
  3. 이제 시작값 인덱스를 구해줄 for문을 돌려주면 되는데, 조건이 있었다. 내가 생각했던 조건은 다음과 같다.
  • for문은 배열의 전체 크기의 절반까지만 돌려준다.
  • 단, 배열의 전체 크기가 홀수라면 2로 나눈 몫까지만 for문을 돌려준다.
  1. 마지막은 문자열을 합쳤다.
  • join 메서드가 기억이 안났다…
  1. 문자열을 합친 answer 변수를 리턴하여 마무리.

문제풀이 (다른사람)

function solution(my_string) {
    var answer = [...my_string].reverse().join("");
    return answer;
}
  • 가장 많은 좋아요를 받은 사람의 풀이를 가져왔다.
  1. 스프레드 문법으로 구조분해
  • 스프레드 : 배열이나 문자열과 같이 **반복이 가능한 문자를 0개 이상의 인수(파라미터, 함수로 호출시) 또는 요소(배열 리터럴의 경우)**로 확장 가능
  • 즉, 문자열을 전개하게 되면 각각 쪼개져 전개된다.
  1. reverse() 메서드를 사용해 반전
  • reverse() 는 배열의 순서를 반전한다.
  1. join(””) 메서드로 텍스트를 병합
  • join() 메서드는 배열의 모든 요소를 연결해 하나의 문자열로 만든다.

레퍼런스