팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
i! ≤ n
0 < n ≤ 3,628,800
n | result |
---|---|
3628800 | 10 |
7 | 3 |
입출력 예 #1
10! = 3,628,800입니다. n이 3628800이므로 최대 팩토리얼인 10을 return 합니다.
입출력 예 #2
3! = 6, 4! = 24입니다. n이 7이므로, 7 이하의 최대 팩토리얼인 3을 return 합니다.
팩토리얼을 사용하기 위해 math
모듈을 import
한다.
팩토리얼 값을 담은 배열을 만들기 위해 빈 배열을 초기화한다.
팩토리얼 값을 반복문으로 만들 때 범위는 1부터 10까지로 지정한다.
제한사항이 0 < n ≤ 3,628,800
으로 나와 있기 때문이다. (3,628,800 = 10!)
math.factorial(i)
로 팩토리얼 값을 만들어 배열에 append
한다.
팩토리얼 값만 담긴 배열을 만든 후에는 n
과 값의 크기를 비교해줘야 한다.
팩토리얼 값은 1부터 시작되기 떄문에 j에 1을 더한 값(인덱스는 0부터 시작)을 리턴한다.
import math
def solution(n):
fact_arr = []
for i in range(1, 11):
fact_arr.append(math.factorial(i))
for j in range(len(fact_arr)):
if n == fact_arr[j]:
return j + 1
elif n > fact_arr[j] and fact_arr[j + 1] > n:
return j + 1