가장 큰 문제는, 아마 변환 작업이 아닌 문제에 제시된
-2의 31승, 2의 31승 - 1 의 범위에 부합하지 않으면 0이 반환되어야 한다는 조건인데
내가 놓쳤던 포인트는 변환 이전이 아닌 변환 이후 해당 범위 존재 여부를 체크해야한다는 것이다.
function reverse(x: number): number {
const strX = String(x)
const splitedX = strX.split("")
const isNegative = splitedX[0] === '-'
const reversedX = splitedX.reverse()
let isFirstNumFound = false
const filterdX = splitedX.filter(a => {
if(a === '-') return false
if(a !== '0' && !isFirstNumFound) {
isFirstNumFound = true
}
if(a === '0') {
return isFirstNumFound
}
else return true
})
const resultStr = (isNegative ? "-" : "") + filterdX.join("")
const result = Number(resultStr)
if(result > 0) {
return result < Math.pow(2, 31) - 1 ? result : 0
} else if(result === 0) return 0
else {
return result > Math.pow(-2, 31) ? result : 0
}
};