Bleeding edge

[LeetCode] 66. Plus One - 자바스크립트 0620 본문

코딩테스트 공부

[LeetCode] 66. Plus One - 자바스크립트 0620

codevil 2022. 6. 20. 11:09

1회차 풀이에서는 아주 큰 숫자가 대입되서 Wrong!이 나왔다. 문제는 아주 많은 숫자가 들어올 수 있다고 생각하고 BigInt를 사용하여 문제를 풀이하였다.

1. 주어진 문자를 join으로 문자로 만든다 주어진 arr가 [1,2,3]이라고 한다면 123이 된다.

digits.join("")

2. 1에서 구한 식을 BigInt로 감싼다. 이 때 결과값은 123n이 된다

BigInt(digits.join(""))

3. 2에서 구한식에 BigInt(1)을 더하고, 문자로 바꾼다. 이유는, BigInt는 바로 Split이 안되기 떄문이다.

(BigInt(digits.join("")) + BigInt(1)).toString()

4. 3에서 구한 것을 split한 후, 각 문자에 대하여 map을 취하여 숫자로 바꿔준다.

전체풀이

var plusOne = function (digits) {
    return (BigInt(digits.join("")) + BigInt(1)).toString().split("").map((v) => Number(v))
};

 

테스트케이스를 항상 BigInt를 신경써서 문제를 풀이해야겠다.