백준 알고리즘

백준 10872번 팩토리얼 문제풀이, 파이썬

고인호 2023. 3. 12. 20:53
반응형

백준 10872번 : 팩토리얼 문제풀이 [파이썬] 


<문제>

 

10872번 문제의 내용은 아래와 같습니다. 

 

 

팩토리얼 

문제

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

입력

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

출력

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

예제 입력 1 복사

10

예제 출력 1 복사

3628800

예제 입력 2 복사

0

예제 출력 2 복사

1

 

 

<작성한 코드>

#팩토리얼 - 재귀

N = int(input())

def factorial(num):
  ans = 1
  if num > 0:
    ans = num * factorial(num-1)
  return ans

print(factorial(N))

 


 

 

<코드 풀이>

 

본 문제를 for 문을 사용해서 풀어도 되지만,

문제 분류가 '재귀'로 되어있어서

재귀함수를 사용해 풀어보았다. 

 

N = int(input())

먼저 위처럼 입력값을 받기 위한 코드를 작성해주었다. 

 

 

def factorial(num):
  ans = 1
  if num > 0:
    ans = num * factorial(num-1)
  return ans

다음으로는 factorial 이라는 이름을 가진 함수를 정의해주었다. 

계산 결과는 ans에 초기값을 1로 넣어주었고, 

전달되는 인수의 값이 0보다 클때만 재귀함수가 동작하도록 했다. 

 

이렇게하는 이유는 문제의 조건에서처럼

입력값이 0으로 주어졌을때, 재쥐함수 부분을 돌지않고 

ans = 1 부분만 실행하여, 1 값을 리턴하도록 하기 위해서다. 

 

 

print(factorial(N))

마지막으로는 우리가 만든 함수에

입력값 N을 인수로 전달하여 출력해주면 끝난다. 

반응형