본문으로 바로가기

leetcode. Reverse Integer

category Algorithm문제 5년 전

문제

요약

주어진 정수를 뒤집어라

뒤집은 정수가 32비트 정수범위 밖이라면 0을 반환해라

풀이

첫번째

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    const str = x.toString().split('');
    str.reverse();
    if(str[str.length-1]==='-'){
        str.unshift(str.pop());
    }

    return Number(str.join(''));
};

문제를 꼼꼼히 읽지않고 대충 풀었다가 틀렸다..

두번째

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    const str = x.toString().split('');
    str.reverse();
    if(str[str.length-1]==='-'){
        str.unshift(str.pop());
    }

    const answer = Number(str.join(''));
    return (answer >= 2147483647 || answer <= -2147483647) ? 0 : answer;
};

정수범위 밖이면 0을 리턴하도록 해서 정답.

Discuss

나는 배열로 변환해서 풀었는데 꽤 간단한 풀이가 있어서 참고해서 풀어봤다

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    const MAX_VALUE = 2147483647;
    const MIN_VALUE = -2147483647;
    let answer = 0;
    while (x!==0){
        answer = answer*10 + (x % 10);
        x = Math.trunc(x/10);
    }

    return (answer>=MAX_VALUE || answer<=MIN_VALUE) ? 0 : answer;
};

Math.trunc

Math.trunc는 주어진 값을 양수, 음수를 유지한체로 정수값만 남기는 메소드다

reverse를 쓸 때는 번거롭게 음수 처리를 해주어야했으나 trunc를 쓰면 음수를 answer와 곱해서 음수 처리를 해 줄 필요가 없는 것이 장점

Algorithm문제카테고리의 다른글

baekjoon. 평범한 배낭  (0) 2021.01.27
baekjoon. LCS  (0) 2021.01.26
leetcode. ZigZag Conversion  (0) 2021.01.18
leetcode. Longest Substring Without Repeating Characters  (0) 2021.01.16
leetcode. Add Two Numbers  (0) 2021.01.14