티스토리 뷰
728x90
반응형
팩토리얼은 간단하게 n!로 나타내며,
1부터 n까지의 모든 자연수를 1씩 더해가며 곱하는 연산을 가리킨다.
개념을 더 정확하게 파악하려면 1부터 n까지의 자연수가 아닌 n부터 1까지의 자연수를 곱하는 게 맞지만,
지금은 그게 중요한게 아니니까.
파이썬으로는 크게 세 가지 방법으로 팩토리얼을 구현할 수 있다.
물론 바텀업 방식의 동적계획법 등은 여기에선 빠져있다.
가장 먼저, 파이썬의 math 라이브러리에서 제공하는 기본 함수를 사용하자.
그냥 가져다 쓰면 된다.
import sys
import math
n = int(sys.stdin.readline().rstrip())
print(math.factorial(n))
sys 라이브러리를 사용하지 않으면 세 줄로 팩토리얼 계산이 끝나버린다.
다음 방법은 재귀함수이다.
import sys
def fac(n):
if n == 0:
return 1
return n * fac(n - 1)
n = int(sys.stdin.readline().rstrip())
print(fac(n))
재귀함수 문제를 풀어봤다면 한 번쯤은 구현해 봤을 법한, 팩토리얼 함수 구현이다.
다음으로는 반복문이다.
가장 직관적이면서 팩토리얼이 어떻게 계산되는지 이해하기 편하다.
import sys
n = int(sys.stdin.readline().rstrip())
result = 1
for i in range(1, n + 1):
result *= i
print(result)
추가로, 기본 방법에서 제외했던 동적계획법을 이용하는 방법이다.
굳이 따지자면 시간복잡도와 공간복잡도는 재귀와 같지만, 계산 효율성이나 메모리 활용에서 이점이 있다.
구현은 아래와 같다.
import sys
n = int(sys.stdin.readline().rstrip())
memo = [1, 1] + [0] * (n - 1)
for i in range(2, n + 1):
memo[i] = i * memo[i - 1]
print(memo[n])
반응형
'Python > Python' 카테고리의 다른 글
[Python]전략패턴 (0) | 2023.08.15 |
---|---|
[Python]enumerate() 내장함수 (0) | 2023.05.21 |
[Python]컴프리헨션(Comprehension) (0) | 2023.04.30 |
[Python]최대공약수, 최소공배수 (3) | 2023.04.09 |
[Python]set 자료형 각종 연산 (1) | 2023.04.08 |
[Python]함수 만들고 호출하기 (0) | 2023.02.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 유럽
- 중남미
- Backjoon
- 여행
- java
- 기술면접
- spring
- 자바
- 남미
- 백준
- 동적계획법
- a6000
- 면접 준비
- Python
- 세계여행
- 알고리즘
- BOJ
- 세모
- 지지
- RX100M5
- 리스트
- 맛집
- Algorithm
- 스트림
- 파이썬
- 야경
- 세계일주
- 유럽여행
- 스프링
- 칼이사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함