[codekata]Week3_Day2

문제

문자로 구성된 배열을 input으로 전달하면, 문자를 뒤집어서 return 해주세요.

새로운 배열을 선언하면 안 됩니다. 인자로 받은 배열을 수정해서 만들어주세요.

Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]


풀이

1) Array.prototype.reverse() reverse() 메서드는 함수를 호출한 배열을 거꾸로 뒤집은 다음 그 배열을 가리키는 참조값을 반환하기때문에 reverse()를 실행시켜도 새로운 배열을 만드는게 아니라 변형된 배열을 반환한다.

const reverseString = strArr => {
  return strArr.reverse();
};


2)

  1. 문자열의 가운데에 있는 문자는 바꿔줄 필요가 없으므로 strArr.length / 2를 내림한 숫자가 endIndex보다 작은 동안만 while 반복문👇
  2. startIndex에 첫번째 인덱스, endIndex에 마지막 인덱스 저장 후 시작과 끝에 있는 두 단어 교환
  3. endIndex 에서는 -1, startIndex에서는 +1을 한 후 두번째 과정 반복

    const reverseString = strArr => {
    let temp;
    let startIndex = 0;
    let endIndex = strArr.length - 1;
    
    while(endIndex > Math.floor(strArr.length / 2)) {
    temp = strArr[startIndex];
    strArr[startIndex] = strArr[endIndex];
    strArr[endIndex] = temp;
    endIndex--;
    startIndex++;
    }
    
    return strArr;
    };