입력값인 divided를 divisor로 나누는 문제.
Integer 범위를 벗어나면 그 마지막 범위를
구분 | 자료형 | 범위 |
---|---|---|
정수형 | (signed) int | (2 ^ 31) -2,147,483,648 ~ 2,147,483,647 |
숫자형 | number | (2 ^ 53 - 1) ~ -(2 ^ 53 - 1) |
JS는 숫자 타입이 Number로 존재. 범위가 Integer와 다르기때문에 범위 계산을 미리 해둔다.
값을 나누고난뒤 소수점자리는 버린다.
나눈값이 범위를 넘었을땐 계산해둔 Integer범위를 리턴한다. 그게 아니라면 계산된 값을 리턴한다.
/**
* @param {number} dividend
* @param {number} divisor
* @return {number}
*/
var divide = function (dividend, divisor) {
const left = -(2 ** 31)
const right = 2 ** 31 - 1
let num = parseInt(dividend / divisor)
if (num < left) return left
else if (right < num) return right
else return num
}