본문 바로가기
algorithm/Programmers

[JAVA] 팩토리얼

by 이쟝 2023. 1. 23.

문제 설명

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

  • i! ≤ n

제한사항
  • 0 < n ≤ 3,628,800

입출력 예nresult
3628800 10
7 3

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

1. 기본 for문

class Solution {
    public int solution(int n) {
        int count = 1;
        int answer = 0;
        // for문을 돌면서
        for(int i=1; i<=10; i++) {
            count *= i;
            if(count <= n) { //count가 n보다 작으면 i는 팩토리얼 수
                answer = i;
            }
        }
        return answer;
    }
}

2. while문

class Solution {
    public int solution(int n) {
        int answer = 1;
        int count = 1;
        while(count <= n) {
            answer ++;
            count *= answer;
        }
        return answer-1;
    }
}

쉽게 풀 수 있었다.. while문에서는 i를 사용할 수 없어서 answer을 i역할로 한 뒤에 answer-1를 해주면 답이 나온다!

팩토리얼은 while문으로 해도 편할 것 같다..!