본문 바로가기

알고리즘

Extra Long Factorials javascript 번역 및 풀이

728x90

원문 및 번역

 

The factorial of the integer n, written n!, is defined as:

정수 n 팩토리얼은 n! 쓰며, 다음과 같이 정의한다.

n! = n * (n-1) * (n-2) * 3 * 2 * 1

 

Calculate and print the factorial of a given integer.

주어진 정수의 팩토리얼을 계산하여 출력한다.

 

For example, if , we calculate  and get .

예를들어, n=30이면, 30*29*…2*1 계산하고 결과로265252859812191058636308480000000 얻을 있다.

 

Function Description

Complete the extraLongFactorials function in the editor below. It should print the result and return.

아래 에디터에서 extraLongFactorials 함수를 완성하라. 결과를 출력하고 리턴하라

 

extraLongFactorials has the following parameter(s):

n :  an integer

extraLongFactorials 함수는 아래와 같은 파라미터를 갖는다.

n :  정수

 

Note: Factorials of  can't be stored even in a  long long variable.

참고 : long long 변수에는 팩토리얼을 저장할 없다.

 

Big integers must be used for such calculations.

그러한 계산에는 Big integers 사용해야 한다.

 

Languages like Java, Python, Ruby etc. can handle big integers, but we need to write additional code in C/C++ to handle huge values.

자바, 파이썬, 루비 기타 등등은 big integers 다룰 있지만 C/C++로 큰 값을 다루는 것에는 추가적인 코드가 필욯다ㅏ.

 

We recommend solving this challenge using BigIntegers.

우린 BinIntegers 사용하여 과제를 해결하길 추천한다.

 

Input Format

Input consists of a single integer n

입력은 단일 정수 n으로 구성된다.

 

Constraints

1  <= n <= 100

 

Output Format

Print the factorial of n.

팩토리얼 n 출력한다.

 

Sample Input

25

Sample Output

15511210043330985984000000

Explanation

25*24*23*3*2*1

 

문제 해결 방법

자바스크립트의 경우에는 bigInt 사용하면 간단하게 해결할 있다.

하지만 bigInt 나름대로 아주 문제가 있는데,

IE 엣지가 bigInt 지원하지 않는다는 것이다.

대규모 프로젝트에서는 일반적으로 IE 표준이기 때문에 bigInt 통해 클라이언트 로직을 작성하면 안된다.

굳이 표현이 필요하다면 별도의 Big Number 라이브러리를 도입해야 한다.

직접 작성하는것은 문제에서 나왔듯이 굉장히 가치있는 작업이지만 귀찮기 때문에 다음에 작업하도록 겠다.

 

 

소스코드

1
2
3
4
5
6
7
8
extraLongFactorials(n) {
     var result = 1n;
     n = BigInt(n)
     for(var i=1n;i<=n;i++){
         result *=i;
     }
     console.log(result.toString(10));
}
cs

 

 

728x90