본문으로 바로가기

leetcode. Reverse Integer

category Algorithm/문제 2021. 1. 19. 20:48

문제

요약

주어진 정수를 뒤집어라

뒤집은 정수가 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