두 수의 합 (Number가 요청처리수를 넘어갈 때)

돌리의 하루·2023년 10월 21일

문제 설명

0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.

제한 사항

1 ≤ a의 길이 ≤ 100,000
1 ≤ b의 길이 ≤ 100,000
a와 b는 숫자로만 이루어져 있습니다.
a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다.

solution

처음 보고 흠..너무 간단하네~라고 생각한 나의 풀이는 아래와 같았다!

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)
}
profile
진화중인 돌리입니다 :>

0개의 댓글