728x90
문제 : i 팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를 들어 5! = 5 * 4 * 3 * 2 * 1 = 120입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
- i! ≤ n
제한 사항 0 < n ≤ 3,628,800
입출력 예
입출력 예 설명
1. 10! = 3,628,800입니다. n이 3628800이므로 최대 팩토리얼인 10을 return 합니다.
2. 3! = 6, 4! = 24입니다. n이 7이므로, 7 이하의 최대 팩토리얼인 3을 return 합니다.
풀이
일단 제한 사항에 나온 최댓값이 10의 팩토리얼임을 알 수 있다.
10에서 1까지 반복문을 순회하도록 구성했다.
class Solution {
fun solution(n: Int): Int {
var res = 0
//재귀 함수
fun factorial(n: Int): Int {
return if (n == 1) n
else n * factorial(n - 1)
}
for (i in 10 downTo 1) {
if (factorial(i) <= n) {
res = i
break
}
}
return res
}
}
재귀 함수는 n이 1이면 바로 1을 반환하고,
2 이상에서는 n - 1을 곱하도록 재귀 호출하도록 구성하면 된다.
728x90