백준

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

sson-coding 2026. 1. 2. 15:12

문제 링크

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

문제

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

입력

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

출력

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

예제

입력

10

출력

3628800

정답 및 풀이

import sys
input = sys.stdin.readline

def factorial(num):
    if num <=1 :
        return 1
    return factorial(num-1) * num

n = int(input())
print(factorial(n))
  1. import sys
    • 표준 입력을 빠르게 처리하기 위해 sys 모듈을 불러온다.
  2. input = sys.stdin.readline
    • input() 대신 sys.stdin.readline()을 사용해 입력 속도를 개선한다.
  3. def factorial(num):
    • 팩토리얼을 계산하는 재귀 함수를 정의한다.
  4. if num <= 1:
    • 재귀 종료 조건(기저 조건)
    • 0!과 1!은 모두 1이므로 여기서 재귀를 멈춘다.
  5. return 1
    • 종료 조건을 만족했을 때 반환값을 1로 설정한다.
  6. return factorial(num-1) * num
    • 현재 수 num에 대해 (num-1)! * num을 계산한다.
    • 함수가 자기 자신을 다시 호출하는 재귀 호출 구조이다.
  7. n = int(input())
    • 정수 n을 입력받는다.
  8. print(factorial(n))
    • 입력받은 n에 대해 n!을 계산한 결과를 출력한다.