문제
문제 링크 : 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을 더했을 때 9보다 큰 경우와 아닌 경우로 나누어
- 큰 경우에는 올림을 해야하는지 조건에 따라 계산하여 return
- 아닌 경우에는 배열 맨 끝의 수만 +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;
};
- BigInt로 수를 만들고, string으로 만들어서 arr 생성하여 return
- Runtime 49 ms, Memory 40.9 MB
'알고리즘 풀이 > leetcode' 카테고리의 다른 글
[leetcode, JS] 67. Add Binary (0) | 2023.10.04 |
---|---|
[leetcode, JS] 58. Length of Last Word (0) | 2023.09.25 |
[leetcode, JS] 28. Find the Index of the First Occurrence in a String (0) | 2023.09.25 |
[leetcode, JS] 27. Remove Element (0) | 2023.09.25 |
[leetcode, JS] 26. Remove Duplicates from Sorted Array (0) | 2023.09.22 |