알고리즘 문제/백준

[백준-10872] 팩토리얼

freeParksey 2022. 2. 5. 03:50

팩토리얼 

문제

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

입력

첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.

출력

첫째 줄에 N!을 출력한다.

예제 입력 1 복사

10

예제 출력 1 복사

3628800

예제 입력 2 복사

0

예제 출력 2 복사

1

문제 분석

  • N! = N x N-1 x N-2 ... 2 x 1
  • 0! = 1
  • 순차적으로 1씩 빼서 곱하는 형태

 

해결

  • 각 숫자를 함수로 생각
  • 예외처리(중요)
    • n이 0과 1인 경우 1을 반환해야 합니다
    • n이 2인 경우 2를 반환
    • n이 0과1인 경우와 2인 경우로 나눈 이유 : 1번이라도 함수 호출 줄이기 위해
1
2
3
4
5
6
7
8
9
val = int(input())
 
def fact(n):
    if n == 0 or n == 1:
        return 1
    if n == 2:
        return 2
    return n * fact(n-1)
print(fact(val))