반응형
문제 출처:https://www.hackerrank.com
※ 문제
어떤 자연수 N이 있을 때, N의 팩토리얼은 아래와 같다
N!= N x (N-1) x (N-2) x (N-3) x --- x 3 x 2 x 1
예를 들어 N이 25일 때 팩토리얼 값은 15511210043330985984000000 이다
참고로 N>20 인 경우 BigInteger를 사용해야만 가능하다
입력 받는 숫자의 팩토리얼을 구하라.
※ 풀이1
재귀함수를 통해 구현한다.
※ 소스코딩1
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.println( fact(n));
}
public static BigInteger fact(int n){
BigInteger factVal = BigInteger.valueOf(n);
if(n<=1){
return factVal;
}else{
return factVal.multiply(fact(n-1));
}
}
}
※ 풀이2
재귀함수를 이용하지 않고 for문을 통해 구현한다.
※ 소스코딩2
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
BigInteger factSum = new BigInteger("1");
BigInteger factVal = null;
for(int i=0; i<n; i++){
factVal=BigInteger.valueOf(n-i);
factSum=factSum.multiply(factVal);
}
System.out.println(factSum);
}
}
반응형
'알고리즘&코딩테스트 > 코딩테스트' 카테고리의 다른 글
1000미만의 자연수에서 3,5의 배수의 총합을 구하라 (0) | 2017.09.12 |
---|---|
문자열의 프린트(출력) 하기 (0) | 2017.09.09 |
Recursio(재귀호출)을 이용한 문자열의 길이 계산 (0) | 2017.09.09 |
1 이상이고 5000 보다 작은 모든 셀프 넘버들의 합을 구하기 (0) | 2017.09.04 |
직사각형 나머지 한점의 좌표찾기 (0) | 2017.08.31 |