프로그래머스 (JS)/Lv. 0

[Programmers] 120848번 - 팩토리얼

hodo- 2023. 3. 3. 19:34

Problem

문제 보기

i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.

- i! ≤ n


Solution

function solution(n) {
    let i = 1;
    while(true){
        let result = 1;
        
        for (let j = i; j > 0; j--){
            result *= j
        }
        if (result <= n){
            i++;
        } else {
            return i - 1;
        }
    }
}

숫자가 점점 1씩 증가하며 각 팩토리얼 값을 구하고 그 팩토리얼 값이 n보다 작을 때까지 반복한다.

근데..더 편하게 풀 수 있는 방법이 있었다ㅜㅜ...

function solution(n) {
    let i = 1;
    let f = 1;
    while (f*i < n) f*=++i;
    return i;
}