숫자에 1을 더해서 리턴하면 되는 간단한 문제이지만,
배열로 쪼개져 있으며 숫자의 길이가 최대 100이므로
int로 변환해 1을 더하는 방식은 사용할 수 없다.
leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/559/
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
// 1899 -> 뒤에서부터 반복을 돌며 9면 0, 아니면 +1한다. => 1900
// 99 -> 뒤에서부터 반복을 돌며 9면 0으로 바꾸고, 마지막에도 9라면 1을 처음에 추가한다. => 100
const last = digits.length - 1;
for (let i in digits){
if (digits[last-i] === 9) {
digits[last-i] = 0;
} else {
// 9가 아니면 1을 더하고 그대로 바로 리턴하면 된다.
digits[last-i] = digits[last-i] + 1;
return digits;
}
}
console.log(digits);
// 반복이 끝까지 돌았다면, 9밖에 없는 경우다. 처음에 1을 추가해준다.
digits.unshift(1);
return digits;
/**
* 처음엔 배열을 합쳐 숫자로 만든 후 1을 더하고 다시 배열로 쪼개는 방식을 사용하려고 했으나,
* 주어지는 배열의 최대 길이는 100이므로 int의 범위를 넘어가서.. 아래 방식은 사용할 수 없다.
*
* const num = parseInt(digits.join(''));
* const plusStr = (num+1).toString();
* const arr = plusStr.split('');
* const numArr = arr.map((item) => parseInt(item));
* while(digits.length > numArr.length){
* numArr.unshift(0);
* }
* return numArr;
*/
};
'Web development > Algorithm' 카테고리의 다른 글
[LeetCode] Valid Sudoku (0) | 2021.01.15 |
---|---|
[LeetCode] Move Zeros, Two Sum (0) | 2021.01.15 |
[LeetCode] Single Number, Intersection of Two Arrays II (0) | 2021.01.12 |
[LeetCode] Rotate Array, Contains Duplicate (0) | 2021.01.08 |
[LeetCode] Remove Duplicates From Sorted Array (0) | 2021.01.06 |
댓글