i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 4 3 2 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.(0 < n ≤ 3,628,800)
생각한 풀이
1. 펙토리얼은 재귀로 풀면 좋을꺼 같다
2. 재귀함수를 만드는 것 이외에는 크게 신경 쓸 게 없다
class Solution {
public static int fec(int num){
if(num>1){
return num*=fec(num-1);
}
return 1;
}
public int solution(int n) {
int answer = 1;
while(fec(answer)<=n){
answer++;
}
return answer-1;
}
}
🐴 풀이
1. 펙토리얼 재귀함수를 만들때 파라미터로 받은 값을 fec(num-1)로 자기 자신에서 1씩 감소하게 만들어 if문에서 1보다 클때만 해당하게 만든다
2. while을 통해 주어진 n값보다 펙토리얼 값이 작은 가장 큰 값을 찾는다
3. while문 내부에서 값이 증가한후 조건에 만족하지 못해 나오기때문에 n보다 작은 값을 반환할때는 answer-1을 해준다
Today's Quote
Magic you are looking for is in the work you are avoiding