본문 바로가기
Algorithm

[구현/수학] 백준 10872 팩토리얼 - Python, Java

by jangThang 2022. 1. 28.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    10872번: 팩토리얼

    0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     팩토리얼을 구하는 문제입니다.

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하여 해결할

    star7sss.tistory.com

     반복문을 이용하면 쉽게 구할 수 있는 문제입니다. 괜히 어설프게 재귀함수를 사용하면 시간초과가 날 수 있습니다. 재귀함수의 예시로 팩토리얼이 자주 등장하는 이유는, 대표적인 잘못된 사용이기 때문입니다.

     제대로 팩토리얼을 구현하고자 한다면, 적어도 꼬리 재귀함수를 사용해야 합니다. 대개 팩토리얼은 메모이제이션(Memoization) 기법을 사용해서 구현합니다. 다만 이 문제는 N이 12까지로 계산복잡도가 크지 않으므로 반복문으로 구현합니다.

     

     

     

    3. 코드

    N = int(input())
    res = 1
    for i in range(N):
        res *= i+1
    print(res)

     반복문을 이용해서 팩토리얼을 구해줍니다. 팩토리얼은 1번만 구하므로, 재사용을 고려할 필요는 없습니다.

     


     

    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int time = sc.nextInt();
    		sc.close();
    		System.out.print(factorial(time));
    	}
    	public static int factorial(int a) {
    		int result = 1;
    		for(int i = 1; i <= a; i++) {
    			result *= i;
    		}
    		return result;
    	}
    }

     

     

    반응형

    댓글