Reverse Integer from leetcode (javascript)

JellyChoco·2020년 6월 25일
0
post-thumbnail

문제

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321
Example 2:

Input: -123
Output: -321
Example 3:

Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

var reverse = function (x) {
 
};

해석

숫자 123이 주어지면 숫자 321을 리턴하고,
숫자 -123이 주어지면 숫자 -321을 리턴하고,
숫자 120이 주어지면 0을 제외한 21만 리턴한다.

숫자의 범위는 -2^31 < 리턴하게 될 값 < 2^31-1 이어야 하고, 조건을 충족하지 않는다면 0을 리턴한다.

풀이1.

var reverse = function (x) {
  let MinNum = -2147483648; //-2^31 값
  let MaxNum = 2147483647;  //2^31-1 값
  let result;

  let toStringsArrayReverse = x.toString().split("").reverse();
  //x=123 이면 toStringsArrayReverse = ["3","2","1"], 숫자에서 문자열배열로

  if (toStringsArrayReverse[toStringsArrayReverse.length - 1] === "-") {
    //x=-123 이라면 toStringsArrayReverse = ["3","2","1","-"]
    let saveNegative = toStringsArrayReverse.pop(); // = "-"
    let saveFirstNum = toStringsArrayReverse.shift(); // = "3"
     // => toStringsArrayReverse = ["2","1"] 
    
    toStringsArrayReverse.unshift(saveNegative + saveFirstNum); //"-3"
    // => toStringsArrayReverse = ["-3","2","1"]
   
    result = Number(toStringsArrayReverse.join(""));
    // Number([])이라면 NaN이 나오고, join()을 사용해서 
    //하나의 문자열로 바꿔준다음 Number를 해준다.
    
    if (result > MaxNum || result < MinNum) {
      return 0;
    }
    return result;
  } else if (toStringsArrayReverse[0] === "0") {
    //x = 120 => toStringsArrayReverse = ["0","2","1"]
    toStringsArrayReverse.shift();
    //toStringsArrayReverse = ["2","1"]
    result = Number(toStringsArrayReverse.join(""));
    if (result > MaxNum) {
      return 0;
    }
    return result;
  } else {
    result = Number(toStringsArrayReverse.join(""));
    if (result > MaxNum) {
      return 0;
    }

    return result;
  }
};

후기

숫자의 range를 파악하지 못하고 풀다보니
자꾸 return이 0 이되어야 한다고 그래서 좀 헤맸지만
어렵진 않았던것 같다.

profile
코린이? 개린이!

0개의 댓글