i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 4 3 2 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
| 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 합니다.
class Solution {
public int solution(int n) {
int answer = 1;
int i = 1;
while(answer<=n){
i++;
answer *= i;
}
return i-1;
}
}
조건을 answer가 n보다 작거나 같을 때까지 반복하도록 했다.
조건이 참일 경우 i를 +1하고, +1한 i를 answer에 곱하였다.
입출력 두 번째 예시에서 i가 3일 때 answer는 6이고, 이는 n인 7보다 작으므로 조건이 참이 된다. 그래서 다시 조건문에 들어가면 i가 4가 되고 이 때는 answer가 24가 된다. 이번에는 answer가 n보다 크므로 조건문에는 들어갈 수 없고, 반환해야하는 값이 i-1인 3이 된다.