[JS] 두 수의 합 programmers BigInt()

0

코딩테스트

목록 보기
74/80
post-thumbnail

🎀 문제

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

function solution(a, b) {
    var answer = '';
    return answer;
}

🎀 내 답변

function solution(a, b) {
    let sum = Number(a) + Number(b);
    return String(sum);
}

solution("18446744073709551615", "287346502836570928366");

기댓값과 다른 숫자가 출력된다.
기댓값 : 305793246910280479981
출력값 : 305793246910280500000
이는 JS 에서 지원하는 숫자의 길이를 넘어섰기 때문에 생기는 오류이다.

🎀 모범 답안

function solution(a, b) {
    return (BigInt(a) + BigInt(b)).toString();
}

solution("18446744073709551615", "287346502836570928366");

출력값 : 305793246910280479981

BigInt를 알았다면 쉽게 풀 수 있는 문제였다.

🎀 BigInt()란?

BigInt는 길이의 제약 없이 정수를 다룰 수 있게 해주는 숫자형입니다.

JS에서 Number로 표현할 수 있는 범위를 벗어난 경우 0을 붙여서 출력하게 된다.
이를 처리하기 위해서 새로 도입된 숫자 타입이라고 한다.

profile
일단 해. 그리고 잘 되면 잘 된 거, 잘 못되면 그냥 해본 거!

0개의 댓글