[LeetCode] 7. Reverse Integer

Chobby·2024년 8월 13일
1

LeetCode

목록 보기
44/194

가장 큰 문제는, 아마 변환 작업이 아닌 문제에 제시된

-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
    }
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글