[프로그래머스] Lv.0 팩토리얼.java

김엄지·2024년 4월 26일

알고리즘

목록 보기
66/90

문제 설명

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 answer = 0;
        int num = 1;
        int k = 1;
        
        while(true) {
            num *= k;
            if(num > n) {
                answer = k;
                break;
            }
            k++;
        }
        return answer - 1;
    }
}
  1. 변수 선언
    팩토리얼의 값을 담을 num
    곱해지는 수를 담을 k

  2. while 반복문으로 num에는 k값을 누적하여 곱해준다.

  3. 만약 num > n이 된다면, k값을 answer에 할당하고, break한다.

  4. 반복문 마지막에서 k값을 1씩 증가시켜준다.

  5. 이 때의 k값은 이미 num > n을 만족하는 상황이므로 k보다 1작은 값을 반환한다.

이 방법 말고, 재귀함수를 사용해서 구하는 방법으로 많이 풀이하는 모습을 볼 수 있었다.
자료구조 재귀에 대해서 공부해봐야겠다.


참조
https://tripleup.tistory.com/118

profile
나만의 무언가를 가진 프로그래머가 되자

0개의 댓글