CodingTest

프로그래머스 - 팩토리얼 (JAVA)

쩡선영 2023. 1. 26. 21:09

문제설명


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

1i <= n

<제안사항>

1) 0 < n <= 3,628,800

 

 

 

내가 직접 짜본 코드


class Solution {
    public int solution(int n) {
        int answer = 0;
        int fac=1;
        for(int i=1; i<=n; i++){
            fac*=i;
            if(fac>=n){
                answer=i;
                if (fac>n) answer=i-1;
                break;
            }
        }
        return answer;
    }
}

 

 

코드 해석


1) i부터 n까지 반복문을 돌리면서 fac에 i를 누적 시키며 곱해줍니다'

2) 만약 fac이 n보타 크거나 같은면

3) answer에 i를 넣어주는데

4) fac이 n보다 크게되면 i-1을 넣어주고 반복문을 빠져 나옵니다

 

 

 

다른 사람의 코드


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;
    }
}

이렇게 중첩 if를 사용하지 않고 간단하게 풀 수도 있군요!