
KUKJIN LEE
posted 18 hours ago
프로그래머스 두 수의 합 문제 풀이
function solution(a, b) {
return String(BigInt(a) + BigInt(b));
}
-
BigInt(a)
→ 문자열을 정확한 큰 정수(BigInt) 로 변환 -
BigInt(a) + BigInt(b)
→ 두 큰 숫자를 정확하게 더해요 -
String(...)
→ 다시 문자열로 변환 (문제 요구 사항)
잘못된 풀이
function solution(a, b) {
return String(+a + +b);
}
❗ 숫자가 2^53보다 커지면 오차가 생깁니다.
JavaScript의 기본 숫자 타입(Number)이 2^53 이상에서는 정밀도를 보장하지 않기 때문이에요。이걸 해결하려면 BigInt
를 사용해서 큰 정수 연산을 정확하게 처리해야 합니다.
예시)
const a = "18446744073709551615";
const b = "287346502836570928366";
이 숫자들은 2^53보다 커서 +a + +b
하면 정확한 값이 아닌, 근처 값이 나옵니다. 따라서 String(+a + +b)
를 하면 오차가 생깁니다.
한 줄 요약
JavaScript의 기본 숫자(Number)에 대한 이해를 요구하는 문제입니다.
정확한 숫자 계산이 중요한 금융, 통계, 데이터 관련 개발에서 중요합니다.
BigInt
를 써야 큰 숫자도 정확하게 계산할 수 있습니다. (더 큰 숫자 계산이 필요하고 안정성이 필요하다면 라이브러리도 존재합니다.)