Leetcode [Easy] 7 - Reverse Integer
LeetCode 7
Reverse Integer
문제
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.
나의 코드
function reverse(x: number): number {
  const parsed: string = x.toString();
  const array: string[] = parsed.split("");
  let left: number = array[0] === "-" ? 1 : 0;
  let right: number = array.length - 1;
  let temp: string;
  while (left < right) {
    temp = array[left];
    array[left] = array[right];
    array[right] = temp;
    left++;
    right--;
  }
  const answer: number = Number(array.join(""));
  if (Math.pow(-2, 31) > answer || answer >= Math.pow(2, 31) - 1) return 0;
  else return answer;
}
참고 코드
var reverse = function (x) {
  const reversed =
    parseInt(Math.abs(x).toString().split("").reverse().join("")) *
    Math.sign(x);
  return reversed <= 0x7fffffff && reversed >= -0x80000000 ? reversed : 0;
};
배운점
2^31 은 2진법으로 1 과 0 31 개로 이루어진 수이다. (10^6 이 1 과 0` 6개로 이루어진 것 생각하면 됨)
4 bit 씩 나누면 16진수가 된다. => 2^31 = 0x80000000 (0x 는 16 진수 표현법 > 링크)
1을 빼면 0x7fffffff
Subscribe via RSS