티스토리 뷰

반응형

 

[파이썬] 백준 알고리즘 온라인 저지 10872번 : 팩토리얼

 

Python3 코드

1) 재귀 함수 코드

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

n = int(input())
print(factorial(n))

 

2) for문 코드

n = int(input())

result = 1
if n > 0:
    for i in range(1, n+1):
        result *= i
print(result)

 

 

Python3 코드 풀이

 

1. 작성한 코드에 대한 전체적인 풀이 내용

팩토리얼 (=계승) : 1부터 n까지 양의 정수를 모두 곱한 수이다. 0!=1로 약속하고 n!=n*(n-1)! 의 성질을 가진다.

이와 같은 팩토리얼의 특성을 토대로 코드를 작성했다. 0!=1의 성질을 가지기 때문에 입력받는 수가 0인 경우 1을 출력하고 0보다 큰 경우를 조건문으로 만들었다.

 

재귀 함수 : 함수 자기 자신을 호출하는 함수를 말한다.

이번 문제는 1부터 입력받은 수까지 의 수를 반복적으로 곱하면 되는 문제여서 for문으로도 작성이 가능하지만 백준 단계별 문제에서 재귀 함수에 포함되는 문제여서 재귀 함수를 이용해서 코드를 작성했다.

 

2. 재귀 함수로 작성한 코드를 풀이한다.

2-1. 코드 상단, 함수를 생성한다.

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

예약어인 def를 이용해서 함수를 생성한다. 함수 이름은 factorial로 하고 입력받는 값은 한 개로 지정했다.

 

결괏값으로 return 하게 될 변수 이름을 result로 지정하고서 1을 선언했다. 아래에서 if조건식을 n이 0보다 큰 경우로 제한했기 때문에 입력받는 수 n이 0인 경우에는 result 값이 그대로 1로 출력한다.

 

입력받는 수 n이 0보다 큰 경우에는 팩토리얼이 가진 n!=n*(n-1)! 성질을 이용해서 함수 자기 자신을 불러내서 코드를 작성했다. 이렇게 계산된 값은 result 변수에 선언하여 마지막에 result값을 return 한다.

 

2-2. 코드 하단부, 입력받는 수를 factorial 함수로 계산한다.

n = int(input())
print(factorial(n))

input함수로 입력받아 정수로 변환한 임의의 수 n은 위에서 생성한 factorial 함수로 계산하여 팩토리얼 값을 출력하도록 코드를 작성했다.

 

 

3. for문을 이용한 코드를 풀이한다.

3-1. for문 부분

result = 1
if n > 0:
    for i in range(1, n+1):
        result *= i

마지막에 출력할 변수는 마찬가지로 result라는 이름으로 지정하여 정수 1을 선언하였다. 

n이 0인 경우의 result 값은 1이 되고 0보다 크면 if조건식 아래 for문이 반복되는 동안 1부터 n까지 곱한 수가 result값이 된다. 

 

반응형
댓글
반응형