문제
요약
주어진 정수를 뒤집어라
뒤집은 정수가 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 |