문제 링크
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))
- import sys
- 표준 입력을 빠르게 처리하기 위해 sys 모듈을 불러온다.
- input = sys.stdin.readline
- input() 대신 sys.stdin.readline()을 사용해 입력 속도를 개선한다.
- def factorial(num):
- 팩토리얼을 계산하는 재귀 함수를 정의한다.
- if num <= 1:
- 재귀 종료 조건(기저 조건)
- 0!과 1!은 모두 1이므로 여기서 재귀를 멈춘다.
- return 1
- 종료 조건을 만족했을 때 반환값을 1로 설정한다.
- return factorial(num-1) * num
- 현재 수 num에 대해 (num-1)! * num을 계산한다.
- 함수가 자기 자신을 다시 호출하는 재귀 호출 구조이다.
- n = int(input())
- 정수 n을 입력받는다.
- print(factorial(n))
- 입력받은 n에 대해 n!을 계산한 결과를 출력한다.
'백준' 카테고리의 다른 글
| [백준] 10870 : 피보나치 수 5 (Python/파이썬) (0) | 2026.01.02 |
|---|---|
| [백준] 15649 : N 과 M (1) (Python/파이썬) (0) | 2026.01.02 |
| [백준] 24511 : queuestack (Python/파이썬) (0) | 2026.01.02 |
| [백준] 20920 : 영단어 암기는 괴로워 (Python/파이썬) (0) | 2026.01.02 |
| [백준] 2108 : 통계학 (Python/파이썬) (0) | 2026.01.02 |