Your task is to write function factorial
팩토리얼을 만드시오
None
None
from functools import reduce
def factorial(n):
return reduce(lambda x, y : x * y , [v for v in range(1, n+1)]) if n > 0 else 1
Factorial이란 뭘까요?
주어진 '양의 정수'보다 크거나 작은 모든 숫자들의 곱입니다.
합이라면 SUM을 쓰면 간단히 해결할텐데, 곱이라니 고민이 듭니다. 하지만 '누적'이라는 키워드를 생각한다면
reduce가 생각나실겁니다. reduce는 map이나 filter함수처럼 주어진 리스트나 문자열 등에 대해서 순차적으로 어떤 '조건'을 적용시켜주는 함수입니다. 다만 map은 각각에 적용을 해주고, filter는 주어진 조건에 맞는 애들만 골라뽑는다면 reduce는 적용 후 누적시켜준다는 개념입니다.
그러므로
def factorial(n):
j = 1
for i in range(1, n+1):
j *= i
return j
모듈없이도 for loop을 사용해 충분히 해결가능합니다.
from math import factorial
놀랍게도 파이썬에선 팩토리얼도 math모듈안에 들어있습니다.(저도 처음 알았네요)
심지어 주어진 함수명도 factorial이니 구구절절하게 함수를 구현할 필요도 없고, import만 하면 됩니다.
너무 쉽죠? 🤗