i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 4 3 2 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
- i! ≤ n
제한사항
n
≤ 3,628,800const calcFac = (n) => {
let result = 1;
for (let i = 1; i <= n; i++) {
result *= i;
}
return result;
};
function solution(n) {
let answer = [];
for (let i = 1; calcFac(i) <= n; i++) {
answer.push(i);
}
return answer[answer.length - 1];
}
사실 다른 접근법이 생각이 나질 않았다...
그냥 팩토리얼을 구하는 함수를 만들고, for문에 조건을 문제 그대로 줬다. 그래서 answer 배열에 조건을 충족하는 숫자를 전부 담고, 리턴할 때는 배열의 가장 마지막 값을 반환한다. 이렇게 해도 풀리긴 합니다!
function solution(n) {
for(let i = 1, v = 1; true; v *= ++i) if(v > n) return --i;
}
function solution(n) {
var answer = 0, count = 1, i = 1;
while(count <= n){
i++, answer++;
count = count * i;
}
return answer;
}
구현 방식에서 차이가 있을 뿐 비슷하다.