프로그래머스 : 팩토리얼

Digeut·2023년 2월 27일
0

프로그래머스

목록 보기
8/164

❔문제설명

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

⚠제한사항

0 < n ≤ 3,628,800 (10! = 3,628,800)

🤔아이디어

메소드 함수 이용해서 미리 규칙으로 식을 만든 다음 (10!에 대한 계산값 미리)
메인 메소드에서 10부터 1까지 하나씩 감소하면 가장 큰 정수 구할수 있지 않을까.

💡코드 풀이

class Solution {
    public static int factorial(int num){ //팩토리얼 메소드
        if(num==1) return 1; //재귀함수 사용, num이 1인 경우 1을 return
        return num * factorial(num - 1); 
        //함수를 호출할때마다 num에서 1씩빼서 계산, num이 1이 될때까지 반복한다.
    }
    
    public int solution(int n) {
        int answer = 0;
        for (int i = 10 ; i > 0 ; i --){ 
        //가장 큰 정수를 구해야하니까 10부터 시작 1씩 감소
            if(n >= factorial(i)){
                answer = i;
                break; //빠져나오지 않고 계속 실행하면 결국은 값은 1이된다.
                //제일 먼저 도달한 값에서 빠져나와야함!
            }
        }
        return answer;
    }
}
profile
개발자가 될 거야!

0개의 댓글