reverse 함수에 정수인 숫자를 인자로 받습니다.
그 숫자를 뒤집어서 return해주세요.
x: 숫자
return: 뒤집어진 숫자를 반환!예들 들어,
x: 1234
return: 4321
x: -1234
return: -4321
x: 1230
return: 321
일단 정수형인 x를 string형으로 바꿔주고 새로 선언한 arr 배열을 for문으로 돌려서 값을 추출해낸 다음에 문제와 같은 조건들을 하나씩 맞춰주는 식으로 생각을 했지만, 내 생각대로 풀리지가 않았다.
const reverse = x => {
let str = String(x);
let arr = [];
let result = '';
for(let i=str.length-1; i>=0; i--){
arr.push(str[i]);
console.log(arr);
if(arr[0] === "0"){
arr.splice(0,1);
}else if(arr[arr.length-1] === "-"){
arr.splice(arr.length-1 , 1);
arr.unshift("-");
}
}
}
위에 코드를 보면 arr배열에 값들을 push 하여 내가 생각한대로 만들었지만 return result로 어떻게 마무리할지 잘 모르겠다..ㅜ
function reverse(x) {
let minus = false;
if (x < 0) {
x *= -1;
minus = true;
}
let numText = x.toString();
let result = '';
for (let i = numText.length-1; i >= 0; i--) {
result += numText[i];
}
result = minus ? result * -1 : Number(result);
return result;
}
모델 솔루션을 보고도 이해가지 않았던 부분이 하나 있었다.
만약 x = 1230으로 값이 들어왔을 때 for문에 의해서 '0321'로 바뀌고
Number(result)를 하면 그냥 0321로 나온다고 생각을 했다. console.log(result)를 result = minus ? result * -1 : Number(result); 앞 뒤로 찍어보니 Number(result)를 지나간 console.log(result)는 0이 사라진 321로 값이 반환되었다.. 그래서 Number()메서드를 쓰게 되면 앞에 0이 사라진다(?) 라는 걸 알게 되었다... 뭔가 후련하지 않아서 나중에 멘토님한테 다시 물어봐야겠다.