Written

leetcode / 66. Plus One / JavaScript 본문

알고리즘 문제풀이

leetcode / 66. Plus One / JavaScript

steeringhead 2023. 2. 21. 18:28

https://leetcode.com/problems/plus-one/

 

Plus One - LeetCode

Can you solve this real interview question? Plus One - You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-

leetcode.com

입력으로 주어진 배열을 하나의 정수처럼 보고 거기에 +1을 더한 후 그렇게 구한 값을 배열에 옮겨서 출력하는 

문제였습니다.

 

Example 1:

Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Incrementing by one gives 123 + 1 = 124.
Thus, the result should be [1,2,4].

Example 2:

Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
Incrementing by one gives 4321 + 1 = 4322.
Thus, the result should be [4,3,2,2].

Example 3:

Input: digits = [9]
Output: [1,0]
Explanation: The array represents the integer 9.
Incrementing by one gives 9 + 1 = 10.
Thus, the result should be [1,0].

 

Constraints:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9
  • digits does not contain any leading 0's.

빈 문자열을 하나 만들어서 입력으로 주어진 배열을 for문을 돌아서 string의 형태로 가져옵니다. 

여기서 주의해야 하는 부분이 있는데요, 입력으로 받는 배열의 length가 100까지 가능합니다.

즉, BigInt로 변환해줘야 정확하게 오차 없이 받을 수 있는 입력값이 존재할 수 있다는 것 입니다!

그렇게 BigInt를 사용하기 때문에 + 1n을 더합니다. (그냥 1을 더하면 안됩니다. BigInt끼리의 계산에는 n이 붙어야합니다)

그리고 빈 배열에 앞에서부터 하나씩 push해주면 출력으로 원하는 배열을 만들 수 있었습니다.

밑에는 Accepted받은 풀이입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {
    let num = '';
    for (let i=0; i<digits.length;i++){
        num += String(digits[i]);
    }
 
    let BigNum = BigInt(num);
    BigNum = BigNum + 1n;
    const ans = String(BigNum);
 
    const ansArr = [];    
 
    for (let i=0;i<ans.length;i++){
        ansArr.push(ans[i]);
    }
    
    
 
    return ansArr;
 
};
cs

 

Comments