0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.
1 ≤ a의 길이 ≤ 100,000
1 ≤ b의 길이 ≤ 100,000
a와 b는 숫자로만 이루어져 있습니다.
a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다.
처음 보고 흠..너무 간단하네~라고 생각한 나의 풀이는 아래와 같았다!
function solution(a, b) {
const answer = Number(a) + Number(b)
return String(answer)
}
그런데,,! 코드를 실행하고 예제 중에서 큰 수가 있었는데, 큰 수에서는 작동하지 않았다!!!!
이 예제 빼고는 다 통과됐는데... 이상하다?
그래서 검색해봤더니, Number를 통해서 표현할 수 있는 값의 범위를 넘어섰기 때문에,
넘어간 자리의 수는 0으로 모두 처리되는 것이다!
그래서 내가 찾아본 것은 BigInt다!
이 친구는 JS에서 숫자 타입인 Number가 표현할 수 있는 범위를 넘어서는 정수를 처리해주기 위해 도입되었다.
BigInt는 내장 Math 객체의 메서드와 함께 사용할 수 없고, 연산에서 Number와 혼합해 사용할 수 없다.
그리고 위의 메서드를 이용해서 고쳐서 풀어보았다~!
function solution(a, b) {
const A = BigInt(a)
const B = BigInt(b)
return String(A + B)
}