i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 4 3 2 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
class Solution {
public int solution(int n) {
int answer = 0;
int num = 1;
int k = 1;
while(true) {
num *= k;
if(num > n) {
answer = k;
break;
}
k++;
}
return answer - 1;
}
}
변수 선언
팩토리얼의 값을 담을 num
곱해지는 수를 담을 k
while 반복문으로 num에는 k값을 누적하여 곱해준다.
만약 num > n이 된다면, k값을 answer에 할당하고, break한다.
반복문 마지막에서 k값을 1씩 증가시켜준다.
이 때의 k값은 이미 num > n을 만족하는 상황이므로 k보다 1작은 값을 반환한다.
이 방법 말고, 재귀함수를 사용해서 구하는 방법으로 많이 풀이하는 모습을 볼 수 있었다.
자료구조 재귀에 대해서 공부해봐야겠다.