문제
나의 코드
let x = 1234120
const reverse = (x)=>{
let result = [];
let str_x = x.toString();
let a = ""
if (x<0){
for(let i=str_x.length-1; i>=0; i--){
result.push(str_x[i])
a = '-'+result.join('')
}
return Number(a.slice(0,a.length-1))
}else if(str_x[str_x.length-1]===0) {
for(let i=str_x.length-1; i>=0; i--){
result.push(str_x[i])
a = Number(result.join(''))
}
return a
} else if (x>0){
for(let i=str_x.length-1; i>=0; i--){
result.push(str_x[i])
a = Number(result.join(''))
}
return a
} else if (x === 0){
return 0;
}
}
모범 코드
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;
}
반성의 시간
- 근본적인 문제에 대한 생각보다는 한 줄 한 줄 해결하는 것이 목표가 되어서 코드가 깔끔하지 못하고 자꾸 길어진다. 주의하자
- 이 문제의 핵심은 0보다 작은 숫자를 어떻게 다루는지이다. '-'를 붙일 생각을 하다니...
- 수학적으로 접근이 필요하다. 다양한 방향에서 접근하도록 노력하자