[ reverse ] 에 관련된 알고리즘 영상을 봤다.
본 후 관련된 문제를 풀려고 코테를 열었다.
이건 reverse를 두번 시키는 코딩 문제인건데 머리를 탁치는 순간이 하나 있었다.
진짜 문제 그대로 나는 두번을 reverse 시켜버림..
var isSameAfterReversals = function(num) {
let reversed1 = 0;
let reversed2 = 0;
let remain = Math.abs(num);
//예외처리
if(num === 0) return null;
while(remain !== 0){
reversed1 *= 10;
reversed1 += remain % 10;
remain = Math.floor(remain/10);
}
remain = Math.abs(reversed1);
while(remain !== 0) {
reversed2 *= 10;
reversed2 += remain %10;
remain = Math.floor(remain/10);
}
if(reversed2 === num) return true;
else return false;
};
그렇다고 이게 틀린건 아니였음.
근데....
remain = x / 10
reverse result = x % 10
이라는 알고리즘을 알고 나면 이것은.. 그냥 단순히 끝자리가 0이면 당연히 reverse 값이 return 값이랑 같지않으니 false 를 해야한다는걸 당!연!히! 알테다.
그래서 이 코드는 이렇게 변경 가능
var isSameAfterReversals = function(num) {
if(num == 0) return true;
if(num % 10 == 0) return false;
return true;
};
회사에서 면접을 볼 시엔 두가지를 다 제시하는 것이 좋을 수도 있겠다.