Coding Test/Baekjoon

[Python] 파이썬 백준(27433) 팩토리얼2

파송송 2023. 4. 9. 16:36
728x90

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

 

27433번: 팩토리얼 2

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

www.acmicpc.net


나의 풀이

팩토리얼을 구현하는 문제이다.

팩토리얼은 \( N! \) 으로 표기하고 N보다 작거나 같은 모든 양의 정수의 곱이다.

 

반복문

for문을 n만큼 반복해 N보다 작거나 같은 모든 양의 정수를 곱해주어서 문제를 풀었음

import sys

num = int(sys.stdin.readline())
answer = 1

for i in range(num):
    answer *= (i+1)

print(answer)


재귀함수

num과 answer를 파라미터로 하여 num <1 일 때 answer을 출력하여 문제를 풀었음

import sys
num = int(sys.stdin.readline())
answer = 1
def factorial(num, answer):
    if num < 1:
        print(answer)
        return 0
    else:
        answer *= num
        return factorial(num-1, answer)

factorial(num, answer)


다른 사람의 풀이

사실 재귀함수를 자주 사용하지 않아 쓰는 법이 능숙하지 않아 for문에서 answer을 사용했기 때문에 인자를 2개 받아 재귀함수를 사용하였는데 그렇게 사용하지 않고 num만으로 재귀함수를 통해 팩토리얼을 구현할 수 있다.

val = int(input())

def factorial(num):
    if num <=0:
        return 1
    else:
        return num * factorial(num-1)
print(factorial(val))

 

728x90