JAVA/프로그래머스 코딩테스트 입문

[프로그래머스, LV.0] 팩토리얼

sundori 2024. 12. 10. 16:34

목차

    문제 설명

    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 solution(int n) {
            int i = 1; // 팩토리얼의 초기 값
            int factorial = 1;
    
            // i! <= n인 조건을 만족하는 i를 찾기
            while (factorial <= n) {
                i++; // 다음 숫자로 이동
                factorial *= i; // i! 계산
            }
    
            return i - 1; // 조건을 만족하는 가장 큰 i 반환
        }
    }

    코드 설명

    1. 초기값 설정:
      • i는 1로 시작하며, factorial은 1이다.
      • 예: 1! = 1
    2. 팩토리얼 계산 반복:
      • factorial에 i를 곱하면서 계속 팩토리얼을 계산한다.
      • factorial > n이 되는 순간 반복을 종료한다.
    3. 결과 반환:
      • 반복이 종료되었을 때, 마지막으로 조건을 만족한 값은 i - 1이다.