[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)
- 문자열의 가운데에 있는 문자는 바꿔줄 필요가 없으므로 strArr.length / 2를 내림한 숫자가 endIndex보다 작은 동안만 while 반복문👇
- startIndex에 첫번째 인덱스, endIndex에 마지막 인덱스 저장 후 시작과 끝에 있는 두 단어 교환
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; };