팩토리얼 [CT]

성배·2025년 1월 14일
0

코딩테스트

목록 보기
21/53

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

생각한 풀이
1. 펙토리얼은 재귀로 풀면 좋을꺼 같다
2. 재귀함수를 만드는 것 이외에는 크게 신경 쓸 게 없다


class Solution {
    public static int fec(int num){
        if(num>1){
            return num*=fec(num-1);
        }
        return 1;
    }
    
    public int solution(int n) {
        int answer = 1;
        while(fec(answer)<=n){
            answer++;
        }
        return answer-1;
    }
    
    
}

🐴 풀이
1. 펙토리얼 재귀함수를 만들때 파라미터로 받은 값을 fec(num-1)로 자기 자신에서 1씩 감소하게 만들어 if문에서 1보다 클때만 해당하게 만든다
2. while을 통해 주어진 n값보다 펙토리얼 값이 작은 가장 큰 값을 찾는다
3. while문 내부에서 값이 증가한후 조건에 만족하지 못해 나오기때문에 n보다 작은 값을 반환할때는 answer-1을 해준다

 
Today's Quote

Magic you are looking for is in the work you are avoiding

0개의 댓글