문제 설명
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
- i! ≤ n
제한사항
- 0 < n ≤ 3,628,800
- 내가 푼 답
class Solution {
public int solution(int n) {
int i = 1;
int factorial = 1;
while (factorial <= n) {
i++;
factorial *= i;
}
return i - 1;
}
}
- 변수 i와 factorial을 1로 초기화하고, 변수 facorial이 파라미터로 받은 n값과 같을때까지 while문으로 반복한다.
반복할때마다 변수i값은 1씩 증가되고,
i값은 변수 factorial과 곱하는 연산을 수행한다.
즉, 문제에서 팩토리얼은 1부터 n까지의 정수의 곱을 의미한다고 했기 때문에 변수 factorial에 1부터 곱해진 숫자가 누적되면서 facorial이 n보다 커질때까지 반복한다.