leetcode.com/problems/reverse-integer/
핵심아이디어
알고리즘이 어떻냐 보다는 해당 언어에 대한 이해가 필요한 문제였다.
숫자를 뒤집고 4byte범위를 벗어나면 0을 반환하는 문제였다.
-2^31 ~ 2^31-1 범위를 표현하기 위해
-2**31, 2**31-1 를 사용했으나 -2**31는 표현방법에 맞지 않음을 깨달았다.
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
const limits = [-1 * 2**31, 2**31-1]
let ans = parseInt(String(x).split('').reverse().join(''));
ans = x>0 ? ans : -ans;
if(limits[0]>ans || limits[1]<ans) return 0;
return ans;
};
나보다 효율적으로 짠 사람의 코드
function(x) {
const reversed = parseInt(Math.abs(x).toString().split('').reverse().join('')) * Math.sign(x);
return (reversed <= 0x7fffffff && reversed >= -0x80000000) ? reversed : 0;
};
'개발 > 알고리즘' 카테고리의 다른 글
[LeetCode] 5. Longest Palindromic Substring (팰린드롬) (0) | 2021.01.23 |
---|---|
[LeetCode] 8. String to Integer (atoi) (0) | 2021.01.22 |
[Javascript][BOJ] 1302 베스트 셀러 (0) | 2021.01.14 |
[Javascript][BOJ] 1967 트리의 지름 (0) | 2021.01.11 |
[Javascript][BOJ] 1446 지름길 (0) | 2021.01.10 |