프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] 팩토리얼(Java)

Sigfriede 2023. 4. 18. 16:35

  문제 설명

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

 

  제한사항

  • 0 < n <= 3,628,800

 

  입출력 예

n result
3628800 10
7 3
class Solution {
    static int factorial(int a) {
        if (a <= 1) {
            return a;
        } else {
            return factorial(a - 1) * a;
        }
    }
    public int solution(int n) {
        int answer = 0;
        
        for (int i = 1; i <= 10; i++) {
            if (factorial(i) <= n) {
                answer = i;
            }
        }
        return answer;
    }
}

  factorial 함수는 팩토리얼을 재귀적으로 구현한 함수입니다. solution 함수에서 활용할 것입니다.

  for문이 1부터 10까지 순회합니다. 문제의 조건에서 n은 3628800, 즉, 10!까지이므로 이렇게 조건을 세웠습니다. if문에서 factorial(i)가 n보다 작거나 같을 때, answer는 i가 됩니다. 만약 factorial(i)가 n보다 커지는 순간이 온다면 이는 if문에서 걸러지므로, n보다 커지기 직전의 값을 반환할 것입니다. 이 값은 i입니다.

어쩌다보니 11일차 클리어….