[기초 Lv.0] 두 수의 합

oaksusu·2024년 2월 2일
0
post-thumbnail

오답노트 16번

1. 문제 (링크) :

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

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

2. 내가 푼 방법(오답임)

function solution(a, b) {
    return String(parseInt(a) + parseInt(b));
}

3. 해결한 방법

: 챗지피티 도움을 받음

parseInt로 풀면 안되는 이유 >>

내가 푼 방법으로 풀었을 때 "18446744073709551615"를 parseInt("18446744073709551615")로 하게 되면 18446744073709552000를 반환했음

자바스크립트는 숫자를 나타내는 데이터 타입으로 64비트 부동 소수점(실수를 표현하는 방식)을 사용한다. 정수값을 정확하게 표현하는데 제한이 있다.
18446744073709552000는 64비트 부동 소수점으로 표현할 수 없는 큰 정수여서 parseInt로 문자열을 정수로 표현할 경우 정수 범위 내 근사값으로 변환이 됨.

따라서 매우 큰 정수를 다룰 때는 한 가지 대안으로 BigInt를 활용할 수 있음

profile
삐약

0개의 댓글