본문 바로가기
코딩테스트 입문/Python

[프로그래머스/programmers] 팩토리얼

by Peter.JH 2023. 7. 19.
728x90
반응형

문제:

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

  • i! ≤ n

 

 

입력:

 

정수 n

 

출력:

 

i! ≤ n 에 만족하는 가장 큰 정수

 

제한사항:

 

0 < n ≤ 3,628,800

 

 

입출력 예:

 

n result
3628800 10
7 3

 

solution.py:

 

from math import factorial as fac

def solution(n):
    k = 10
    while n < fac(k):
        k -= 1

    return k

 

 

풀이설명: 

 

python으로 factorial을 구현하는 방법은 여러 가지 있지만 가장 편하고 빠른 방법은 math 라이브러리의 factorial을 사용하는 방법입니다.

제한사항으로 주어진 것을 활용해 최대로 나올 수 있는 값은 10이므로 10에서부터 1씩 감소하며 값을 찾는 방식입니다.

 

 

다른 풀이와 메모이제이션

2024.10.08 - [기초탄탄/Python] - [ CodeSignal ] 재귀를 이용한 팩토리얼 계산: 메모이제이션

 

[ CodeSignal ] 재귀를 이용한 팩토리얼 계산: 메모이제이션

재귀는 복잡한 문제를 단순하고 이해하기 쉬운 코드로 표현할 수 있게 해주는 강력한 프로그래밍 기법입니다. 그러나 때로는 재귀 호출이 과도하게 발생하여 성능 저하나 스택 오버플로우와 같

mudata0101.tistory.com

 

 

 

참조: https://docs.python.org/3/library/math.html

728x90
반응형