광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ
반응형

문제

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

N!을 출력하면 되는데, 이제 재귀함수를 곁들이셔야 한다.

 

풀이

일단 여러분들, 재귀함수가 뭔가요? 그죠 내가 나를 부르고 나를 부르고 나를 부르고 부르고 부르고 하는 게 재귀함수 아닙니까. 그걸로 팩토리얼이 되냐고? 된다. 재귀함수 할 때 기본적으로 해 보는 두 개가 팩토리얼하고 피보나치 수열이다. 그래서 좀 해보신 분들한테는 되게 쉬운 문제다.

 

N = int(input())

# 팩도리얼을 재귀함수로 구현해보자... 
# n! = n * (n-1) * (n-2) * ... * 1이다. 
def factorial(N):
    # 0! = 1
    if N == 0:
        return 1
    # 재귀함수는 내가 나를 부르는 구조임을 잊지 맙시다. 
    else: 
        N *= factorial(N-1)
        return N

print(factorial(N))

함수 안쪽에 있는 것까지 N으로 깔맞춤할 필요는 없다. 여기서 크게 신경써야 하는 두가지는 0!에 대한 처리랑 팩토리얼을 재귀함수로 구현하는건데, 0!은 1이기때문에 if문을 써서 0이 들어오면 1을 내놓거라 하면 되고, 나머지는 n! = n * (n-1) * (n-2) * ... * 1이니까 N * 팩토리얼(N-1) 하면 된다. 괄호 안쪽을 N-2로 수정하면 이중계승도 된다. 

반응형

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 24723번 풀이  (0) 2025.12.04
백준 15439번 풀이  (0) 2025.12.03
백준 2566번 풀이  (0) 2025.12.02
백준 13909번 풀이  (0) 2025.12.01
백준 17103번 풀이  (0) 2024.04.13