백준

[백준] 10872 : 팩토리얼 (Python/파이썬)

sson-coding 2025. 10. 25. 22:40

문제 링크

https://www.acmicpc.net/problem/10872

문제

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

입력

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

출력

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

예제

입력

10

출력

3628800

정답 및 풀이

n = int(input())

def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial(n-1)
print(factorial(n))
  1. n = int(input())
    • 사용자로부터 하나의 정수를 입력받는다.
    • 입력값은 문자열이므로 int()로 정수형으로 변환한다.
  2. def factorial(n):
    • factorial이라는 이름의 함수를 정의한다.
    • 이 함수는 입력받은 n의 팩토리얼(n!) 값을 계산한다.
  3. if n == 0 or n == 1:
    • 팩토리얼의 기저 조건(재귀 종료 조건) 을 설정한다.
    • 0! = 1, 1! = 1 이므로 n이 0 또는 1이면 1을 반환한다.
  4. else:
    • n이 2 이상일 경우 실행되는 부분이다.
    • return n * factorial(n-1)→ 예: factorial(5) = 5 × factorial(4) = 5 × 4 × 3 × 2 × 1
    • → n에 factorial(n-1)을 곱하는 방식으로 재귀 호출을 수행한다.
  5. print(factorial(n))
    • 위에서 입력받은 n을 factorial() 함수에 전달하고,
    • 계산된 결과(팩토리얼 값)를 화면에 출력한다.
    • 예: 입력이 5면 120이 출력된다.