큰 정수 더하기

JavaBeginner
지금 연습하기

소개

이 프로젝트에서는 문자열로 표현된 두 개의 큰 정수를 더하는 함수를 구현하는 방법을 배우게 됩니다. 이는 JavaScript 의 내장 숫자 데이터 타입이 매우 큰 숫자를 표현하고 산술 연산을 수행하는 데 제한이 있는 실제 시나리오에서 흔히 발생하는 문제입니다.

과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 프로젝트 환경을 설정하고 필요한 파일을 생성합니다.
  • 문자열로 표현된 두 개의 큰 숫자를 더하는 로직을 구현합니다.
  • 제공된 예제를 사용하여 addBigNum 함수를 테스트합니다.
  • 솔루션을 최적화하는 방법을 탐색합니다 (선택 사항).

성과

이 프로젝트에서 다음을 배우게 됩니다:

  • 문자열로 표현하여 JavaScript 에서 큰 숫자를 처리하는 방법.
  • 예외 케이스를 처리하고 덧셈 연산의 정확성을 보장하는 기술.
  • addBigNum 함수의 성능을 최적화하기 위한 전략.
  • 유지 관리 가능하고 읽기 쉬운 코드를 작성하기 위한 모범 사례.

프로젝트 환경 설정

이 단계에서는 "큰 정수 더하기" 프로젝트를 위한 프로젝트 환경을 설정하고 필요한 파일을 생성합니다.

  1. 선호하는 코드 편집기를 열고 /home/labex/project 디렉토리로 이동합니다.

  2. /home/labex/project 디렉토리에 addBigNum.js라는 새 파일을 생성합니다.

  3. addBigNum.js 파일에 다음 코드를 시작점으로 추가합니다:

/*
  문자열로 표현된 두 개의 큰 숫자를 더하고 합계를 문자열로 반환합니다.

  매개변수:
  - num1: 첫 번째 큰 숫자를 나타내는 문자열.
  - num2: 두 번째 큰 숫자를 나타내는 문자열.

  반환 값:
  - 두 입력 숫자의 합계를 나타내는 문자열.
*/

function addBigNum(num1, num2) {
  // 여기에 구현 코드가 들어갑니다.
}

module.exports = addBigNum;

이 코드는 프로젝트 지침에 따라 addBigNum 함수를 정의하고 내보냅니다.

✨ 솔루션 확인 및 연습

덧셈 로직 구현

이 단계에서는 문자열로 표현된 두 개의 큰 숫자를 더하는 로직을 구현합니다.

  1. addBigNum 함수에서 입력 문자열 num1num2를 숫자 배열로 변환하는 것으로 시작합니다.
const digits1 = num1.split("").map(Number); // num1 문자열을 숫자 배열로 변환
const digits2 = num2.split("").map(Number); // num2 문자열을 숫자 배열로 변환
  1. 필요한 경우 선행 0 을 추가하여 digits1digits2 배열의 길이가 같도록 합니다.
while (digits1.length < digits2.length) {
  digits1.unshift(0);
}
while (digits2.length < digits1.length) {
  digits2.unshift(0);
}
  1. 최종 합계의 숫자를 저장할 result 배열과 덧셈 중 자리 올림 값을 추적할 carry 변수를 초기화합니다.
const result = [];
let carry = 0; // 덧셈을 위한 자리 올림 값
  1. 오른쪽에서 왼쪽으로 숫자를 반복하여 덧셈을 수행하고 carry 값을 업데이트합니다.
for (let i = digits1.length - 1; i >= 0; i--) {
  const sum = digits1[i] + digits2[i] + carry;
  const digit = sum % 10; // 현재 숫자 값
  carry = Math.floor(sum / 10); // 자리 올림 계산
  result.unshift(digit); // 현재 숫자를 결과 배열의 시작 부분에 추가
}
  1. 남은 자리 올림 값이 있으면 result 배열의 시작 부분에 추가합니다.
if (carry > 0) {
  result.unshift(carry);
}
  1. result 배열을 문자열로 변환하고 최종 합계로 반환합니다.
const sumStr = result.join(""); // 결과 배열을 문자열로 변환
return sumStr;
✨ 솔루션 확인 및 연습

addBigNum 함수 테스트

이 단계에서는 제공된 예제를 사용하여 addBigNum 함수를 테스트합니다.

  1. 코드 편집기에서 addBigNum.js 파일의 끝에 다음 코드를 추가합니다.
// addBigNum 함수 테스트
console.log(addBigNum("0", "0")); // 출력: 0
console.log(addBigNum("99", "1")); // 출력: 100
console.log(addBigNum("11", "123")); // 출력: 134
console.log(addBigNum("9007199254740992", "1")); // 출력: 9007199254740993
  1. addBigNum.js 파일을 저장하고 터미널에서 스크립트를 실행합니다.
node /home/labex/project/addBigNum.js

출력은 프로젝트 지침의 예상 결과와 일치해야 합니다.

✨ 솔루션 확인 및 연습

솔루션 개선 및 최적화 (선택 사항)

이 선택 사항 단계에서는 addBigNum 함수를 추가로 최적화하는 방법을 탐색할 수 있습니다. 몇 가지 잠재적인 개선 사항은 다음과 같습니다.

  • 음수 또는 0 을 입력으로 처리.
  • 매우 큰 숫자에 대한 성능 향상.
  • 잘못된 입력에 대한 오류 처리 추가.
  • 코드 가독성 및 유지 관리성 향상.

코드를 자유롭게 실험하고 전반적인 솔루션을 개선하기 위해 필요한 변경 사항을 적용하십시오.

축하합니다! "큰 정수 더하기" 프로젝트를 완료했습니다. 질문이 있거나 추가 지원이 필요한 경우 주저하지 말고 문의하십시오.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.