[Javascript ] BigInt

MODAC·2023년 10월 4일

BigInt는 알고리즘 공부를 하던 중 거대한 정수를 처리하는 과정에서 사용할 수 있는 방법이다.

MDN에서 BigInt는 BigInt 는 Number 원시 값이 안정적으로 나타낼 수 있는 최대치인 2^53 - 1보다 큰 정수를 표현할 수 있는 내장 객체 로 정의된다.

BigInt는 정확한 정수를 제한없이 표현하기 위해 사용할 수 있는 새로운 데이터 타입으로 Number 타입과 다르게 소수를 표현할 수 없으며 Math 메서드와 함께 사용할 수 없다.

또한 +, *, -, **, %를 통해 같은 BigInt 타입끼리 연산이 가능하여 거대한 정수를 다루는 경우 효율적으로 사용할 수 있는 데이터 타입이다.

BigInt를 활용한 문제해결

효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는
(1칸, 1칸, 1칸, 1칸)
(1칸, 2칸, 1칸)
(1칸, 1칸, 2칸)
(2칸, 1칸, 1칸)
(2칸, 2칸)
의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다.

function solution(n) {
  // 점화식을 활용한 팩토리얼 문제, 정수가 커질수록 부정확한 연산이 나오기 때문에 BigInt를 사용하여 문제를 해결했다.
    let arr = [1n, 1n, 2n];
    for(let i = 3; i <= n; i++) {
        arr.push(arr[i - 1] + arr[i - 2]);
    }
    return arr[n] % 1234567n;
}

0개의 댓글