💾10872 - 팩토리얼

📍 문제 해석
팩토리얼: 1부터 N까지의 정수를 모두 곱한 값 (단, 0! = 1임)
문제의 제약:
📍 내 답안
def Factorial(n):
if n<=1 :
return 1
else:
return n*Factorial(n-1)
print(Factorial(int(input())))
처음엔 이렇게 했는데, 범위가 커지면 재귀함수는 비효율적일 것이다.
(재귀 호출은 스택 사용량이 증가하기때문에 큰 입력에서는 비효율)
다른 방법이 더 좋을 것 같다.
📍 다른 답안
반복문
def Factorial(n):
result = 1
for i in range(2, n+1):
result *= i
return result
n= int(input())
print(Factorial(n))
반복문을 사용하면 스택 사용 없이 안정적으로 동작함
python 표준 라이브러리 - math.factorial()
import math
n = int(input())
print(math.factorial(n))
- Python 표준 라이브러리를 사용하는 것이 가장 간단하고 효율적임
-- 내부적으로 최적화되어 있어 속도, 안정성 면에서 우수하기 때문
Python의 math 모듈
수학적 연산이나 효율적인 계산 필요할 때 유용하다.
아직 코딩테스트를 많이 접하지 못해서 얼마나 자주 나오는지는 모르겠지만
일단 적어두는 math 모듈 관련
1. 팩토리얼 계산
math.factorial(n)
조합, 순열, 재귀적 수열 문제
2. 최대공약수
math.gcd(a, b)
분수 간소화, 배열의 공통 약수 문제
3. 소수점 처리
math.floor(x) : x 이하의 가장 큰 정수 (내림)
math.ceil(x) : x이상의 가장 작은 정수 (올림)
math.trunc(x) : x의 정수 부분만 취함 (버림)
정수형 범위 처리, 좌표 문제에서 정수 변환
4. 제곱근
math.sqrt(x)
피타고라스 정리, 거리 계산, 소수 판별
5. 제곱 및 로그 계산
math.pow(x, y) : x의 y제곱
(단, **연산자가 더 빠름!!)
math.log(x, base): 밑이 base 인 로그 계산
지수 함수나 로그 문제
6. 최소공배수
math.lcm(a, b) (Pytnon 3.9이상)
시간 동기화 문제, 주기 계산
6. 콤비네이션과 순열
math.comb(n, r): n개 중 r개를 선택하는 조합 nCr
math. perm(n, r): n개 중 r개를 선택하는 순열 nPr
조합 순열 문제
'CodingTest' 카테고리의 다른 글
| [Python] sys 모듈 sys.stdin.read(), sys.stdin.readline() (1) | 2024.11.24 |
|---|---|
| [백준/Python] 10950번 A+B -3, sys 모듈 (0) | 2024.11.24 |
| [백준] 10869번: 사칙연산 (1) | 2024.10.07 |
| [프로그래머스] 짝지어 제거하기 - 12973 (0) | 2024.07.02 |