A Very Big Sum
A Very Big Sum
문제
요소들의 합을 계산. 정수들이 매우 클 수 있다는 점에 주의
조건
- $0 \le n \le 10$
- $0 \le arr[i] \le 10^{10}$
예제
5
1000000001 1000000002 1000000003 1000000004 1000000005
5000000015
- 주의: 32비트 정수의 범위는
- $(-2^{31}) to (2^{31} - 1)$
- $[-2147483648, 2147483647]$
해결
1st
- 문자열로 더하는 함수를 구현한다
1st 코드
나눗셈 함수
// https://www.hackerrank.com/challenges/a-very-big-sum/problem?isFullScreen=true
function sumBigNumbers(num1, num2) {
let num1Arr = Array.from(String(num1), Number);
let num2Arr = Array.from(String(num2), Number);
let sum = "";
let carry = 0;
while (num1Arr.length > 0 || num2Arr.length > 0 || carry > 0) {
const n1 = num1Arr.pop();
const n2 = num2Arr.pop();
let newVal = 0;
let tmp = 0;
if (n1 && n2) {
tmp = n1 + carry + n2;
} else if (n1) {
tmp = n1 + carry;
} else if (n2) {
tmp = n2 + carry;
} else {
tmp = carry;
}
newVal = tmp % 10;
carry = (tmp / 10) >>> 0;
sum = `${newVal}${sum}`;
}
return sum;
}
function aVeryBigSum(ar) {
// Write your code here
let answer = "";
for (let i = 0; i < ar.length; i++) {
answer = sumBigNumbers(answer, ar[i]);
}
return answer;
}
console.log(
aVeryBigSum([1000000001, 1000000002, 1000000003, 1000000004, 1000000005])
);
1st 결과(성공)
Test case 0, 1 성공