본문 바로가기
알고리즘/프로그래머스

프로그래머스 - 팩토리얼 (JavaScript)

by 0725 2025. 2. 4.
문제

 

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

 

 

입출력 예 #1

10! = 3,628,800입니다. n이 3628800이므로 최대 팩토리얼인 10을 return 합니다.
입출력 예 #2

3! = 6, 4! = 24입니다. n이 7이므로, 7 이하의 최대 팩토리얼인 3을 return 합니다.

 

 

나의 풀이
function solution(n) {
    var num = 1;
    while (true) {
        var cal = 1;
        for (var i = 1 ; i<= num ; i ++ ) {
            cal *= i;
        }
        if (cal > n) break;
        num ++;
    }
    return num-1;
}

 

접근 방식은 괜찮았는데 while 문 안에 if 의 조건문을 넣었으면 될일 ;;

 

num이 1씩 커지고 cal에 계속 곱하여(팩토리얼) cal 이 n을 넘으면 num-1을 반환

 

 

다른 사람의 풀이 
function solution(n) {
    for(let i = 1, v = 1; true; v *= ++i) if(v > n) return --i;
}

 

i가 1씩 커지고 이 수를 v에 계속 곱하여 v가 n을 넘어서는 순간 i-1을 반환하는 것이 내가 만든 답과 로직은 같지만 for문 하나 만으로 훨씬 간결하게 만들어진 모습

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120848#

댓글