Thief of Wealth

leetcode.com/problems/reverse-integer/

 

Reverse Integer - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

핵심아이디어

알고리즘이 어떻냐 보다는 해당 언어에 대한 이해가 필요한 문제였다.

숫자를 뒤집고 4byte범위를 벗어나면 0을 반환하는 문제였다.

-2^31 ~ 2^31-1 범위를 표현하기 위해

-2**31, 2**31-1 를 사용했으나 -2**31는 표현방법에 맞지 않음을 깨달았다.

 

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    const limits = [-1 * 2**31, 2**31-1]
    let ans = parseInt(String(x).split('').reverse().join(''));
    ans = x>0 ? ans : -ans;
    if(limits[0]>ans || limits[1]<ans) return 0;
    return ans;
};

 

나보다 효율적으로 짠 사람의 코드

function(x) {
    const reversed =  parseInt(Math.abs(x).toString().split('').reverse().join('')) * Math.sign(x);
    return (reversed <= 0x7fffffff && reversed >= -0x80000000) ? reversed : 0;
};
profile on loading

Loading...