큰 수 A + B

문제

언어

  • JavaScript

순서도

  1. 두 정수를 BigInt 타입으로 변환
  2. 변환한 두 정수의 합 구하기
  3. 구한 합을 문자열 형태로 변환 후 출력

문제 풀이 step 1

  • Number 객체는 숫자 값으로 작업할 수 있게 해주는 래퍼 객체입니다.
  • Number 로 표현할 수 있는 안전한 최대 정수는 2 ^ 53 - 1 이고, 안전한 최소 정수는 - (2 ^ 53 - 1) 입니다.
    console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
    console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
    
    • - (9 * 10 ^ 15) ~ (9 * 10 ^ 15) 의 범위를 안전하게 표현할 수 있습니다.
  • 문제에서 주어지는 A 와 B 의 범위는 0 ~ 10 ^ 10000 으로 Number 로 안전하게 표현할 수 있는 범위를 넘어갑니다.
  • 따라서 이 경우에는 BigInt 를 사용해야 합니다.
  • BigInt 는 Number 원시 값이 안정적으로 나타낼 수 있는 최대치인 2 ^ 53 - 1 보다 큰 정수를 표현할 수 있는 내장객체입니다.
  • 주어지는 두 정수 A 와 B 를 BigInt 형으로 변환하고, 합한 다음에 결과값을 문자열의 형태로 변환해서 출력하면 정답이 됩니다.
  • 문자열로 변환을 하는 이유는 정수 리터럴 뒤에 n 이 붙기 때문에 문제에서 원하는 출력 형식에 맞추려면 문자열로 변환해야 합니다.

Reference.

소스 코드

const input = require("fs")
	.readFileSync("/dev/stdin")
	.toString()
	.trim()
	.split("\n");

const solution = (input) => {
	const [a, b] = input[0].split(" ").map(BigInt);

	return (a + b).toString();
};

console.log(solution(input));