본문 바로가기

Algorithm 문제 풀이/python

[파이썬] 백준 10872번

 

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

 

10872번: 팩토리얼

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

www.acmicpc.net

 

 

문제

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

입력

 

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

출력

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

 

 


 

전체 코드

 

 

1. for문

 

N = int(input())

factorial = 1

for i in range(1, N + 1):
    factorial *= i

print(factorial)

 

2. 재귀함수

 

N = int(input())

def factorial(n):
    if n == 0:
        return 1
    if n == 1:
        return 1
    return n * factorial(n - 1)

print(factorial(N))

 

 

 

간단한 팩토리얼을 계산하는 문제입니다. 이 문제는 2가지 방식으로 풀 수 있는데, 첫 번째 방법은 for문으로, 두 번째 방법은 재귀함수로 풀 수 있습니다.

 

for문으로 푸는 방법은 i가 1부터 N까지 곱하면 되는 것이고, 재귀함수로 푸는 방법은 factorial이라는 함수를 일단 선언하고 n * factorial(n - 1)으로 반환합니다. 함수 안에서 자기 자신의 함수를 반환했으므로 재귀함수라고 할 수 있습니다. 그리고 n이 0일 때와 n이 1일때는 이 리턴 값과는 다른 값이 나오므로 1를 반환해줍니다.