문제 링크
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))
- n = int(input())
- 사용자로부터 하나의 정수를 입력받는다.
- 입력값은 문자열이므로 int()로 정수형으로 변환한다.
- def factorial(n):
- factorial이라는 이름의 함수를 정의한다.
- 이 함수는 입력받은 n의 팩토리얼(n!) 값을 계산한다.
- if n == 0 or n == 1:
- 팩토리얼의 기저 조건(재귀 종료 조건) 을 설정한다.
- 0! = 1, 1! = 1 이므로 n이 0 또는 1이면 1을 반환한다.
- else:
- n이 2 이상일 경우 실행되는 부분이다.
- return n * factorial(n-1)→ 예: factorial(5) = 5 × factorial(4) = 5 × 4 × 3 × 2 × 1
- → n에 factorial(n-1)을 곱하는 방식으로 재귀 호출을 수행한다.
- print(factorial(n))
- 위에서 입력받은 n을 factorial() 함수에 전달하고,
- 계산된 결과(팩토리얼 값)를 화면에 출력한다.
- 예: 입력이 5면 120이 출력된다.
'백준' 카테고리의 다른 글
| [백준] 2751 : 수 정렬하기 2 (Python/파이썬) (0) | 2025.10.27 |
|---|---|
| [백준] 17609 : 회문 (Python/파이썬) (0) | 2025.10.25 |
| [백준] 25305 : 커트라인 (Python/파이썬) (0) | 2025.10.25 |
| [백준] 2750 : 수 정렬하기 (Python/파이썬) (0) | 2025.10.25 |
| [백준] 24313 : 알고리즘 수업 - 점근적 표기 1 (Python/파이썬) (0) | 2025.10.22 |