문제
문자로 구성된 배열을 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"]
const reverseString = s => {
return s.reverse();
};
이..이게 뭐지..?
문제의 조건이 새로운 배열을 선언하면 안되고, 인자로 받은 배열을 수정해서 만들어달라고 했기 때문에 reverse() 함수에 모두 부합한 조건이었다. reverse() 함수는 원본 배열을 변형하여 변경된 참조값을 반환한다.
아마 문제에서 reverse() 함수를 사용하지 말라는 조건이 빠진게 아닐까 하여 다른 방법이 있나 찾아보았다.
const reverseString = s => {
for(let i=0; i<s.length; i++){
s.unshift(s[i])
i++;
}
s.splice(s.length/2)
return s
};
기존 배열의 앞에 순차적으로 문자열을 추가해, 역순으로 문자열을 넣는다. 그리고 s.splice(s.length/2)
로 배열 길이의 절반을 기점으로 뒷 부분을 잘라내면 뒤집한 문자가 return 된다.