100%를 한번에 바꾸는건 어려워도 1%를 100번 바꾸는건 쉽다.

생각정리 자세히보기

컴퓨터공학/알고리즘

[알고리즘] 팩토리얼

dc-choi 2023. 11. 13. 12:38
반응형

문제설명

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

 

i! ≤ n

제한사항

0 < n ≤ 3,628,800

내가 풀이한 방법

재귀를 사용하여 문제풀이를 하였습니다.

class Solution {
    public int factorial(int n) {
        if (n == 1) return 1;
        return n * factorial(n - 1);
    }
    
    public int solution(int n) {
        int answer = 0;
        
        for (int i = 1; i <= 10; i++) {
            int count = factorial(i);
            if (count <= n) answer = i;
        }
        
        return answer;
    }
}

다른 풀이방법

다른 분들은 반복문을 사용해서 문제풀이를 하였습니다. 이 경우가 실행속도는 더 빠릅니다.

class Solution {
    public int solution(int n) {
        int fac = 1;
        int i = 0;

        while(true){
            if (fac <= n) {
                fac *= i + 1;
                i++;
            } else break;
        }

        return i - 1;
    }
}
반응형