LC 7-Reverse Integer

Goody·2021년 1월 21일
0

알고리즘

목록 보기
8/122

문제

Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.

Assume the environment does not allow you to store 64-bit integers (signed or unsigned).

예시

//example 1
Input: x = 123
Output: 321

//example 2
Input: x = -123
Output: -321

//example 3
Input: x = 120
Output: 21

//example 4
Input: x = 0
Output: 0

풀이 방법

  • 입력받은 숫자를 숫자 0과 +- 기호만 빼고 뒤집는 문제이다.
  • 숫자를 문자열로 치환한 뒤 reverse() 메소드로 뒤집는다.
  • 뒤집힌 문자열을 배열로 바꾼다.
  • 배열 맨 마지막 원소가 -면 맨 앞으로 옮기고, 0이면 삭제한다.
  • 배열 -> 문자열 -> 숫자로 다시 치환해서 반환한다.
  • 뒤집어놓은 숫자가 지정된 숫자 범위 (-2^31 ~ 2^32-1) 를 벗어나면 0을 반환한다.

코드

var reverse = function(x) {
        let str = x + '';
        const strArr = str.split("");
        let reversedArr = strArr.reverse();
        
        if(reversedArr.length > 1 && reversedArr[0] === "0") reversedArr.splice(0, 1);
        if(reversedArr[reversedArr.length-1] === "-") reversedArr.unshift(reversedArr.pop());
    

        let answer = reversedArr.join("");
        answer = Number(answer);
       
        if(answer > 0x7FFFFFFF) return 0;
        if(answer < -0x7FFFFFFF) return 0;
        return answer;

};

0개의 댓글