[leetcode, JS] 66. Plus One

mxxn·2023년 8월 8일
0

leetcode

목록 보기
13/198

문제

문제 링크 : Plus One

풀이

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {
    const leng = digits.length
    const lastDigits = digits[leng-1]
    if(lastDigits + 1 > 9) {
        let ceil = 1
        digits[leng-1] = 0
        for(let i=leng-2; i>-1; i--) {
            console.log(ceil)
            if(digits[i] + ceil > 9) {
                digits[i] = 0
                ceil = 1
            } else {
                digits[i] += ceil
                ceil = 0
            }
        }
        if(ceil) digits.unshift(1)
        return digits
    } else {
        digits[leng-1] += 1
        return digits;
    }
};
  1. 배열 맨 끝자리 수에 1을 더했을 때 9보다 큰 경우와 아닌 경우로 나누어
  2. 큰 경우에는 올림을 해야하는지 조건에 따라 계산하여 return
  3. 아닌 경우에는 배열 맨 끝의 수만 +1 하여 return
  • Runtime 55 ms, Memory 41.5 MB

다른 풀이

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {
    const num=BigInt(digits.join(''))+1n;
    const numToString=num.toString()

    let arr=[]

    for(let i=0; i<numToString.length;i++) {
        const num=parseInt(numToString[i]);
        arr.push(num)
    }

    return arr;
};
  1. BigInt로 수를 만들고, string으로 만들어서 arr 생성하여 return
  • Runtime 49 ms, Memory 40.9 MB
profile
내일도 글쓰기

0개의 댓글