티스토리 뷰
https://www.acmicpc.net/problem/11050
11050번: 이항 계수 1
첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\))
www.acmicpc.net
First Try 1
import time
import math
start = time.time()
n, k = map(int, input().split())
result = 1
for i in range(k):
result *= n-i
result /= math.factorial(k)
print(int(result))
finish = time.time()
print(f'time: {round(finish-start,3)}')
>>> 10
>>> time: 3.205
First Try 2
import time
start = time.time()
n, k = map(int, input().split())
result = 1
for i in range(k):
result *= n-i
for j in range(1,k+1):
result /= j
print(int(result))
finish = time.time()
print(f'time: {round(finish-start,3)}')
>>> 10
>>> time: 1.732
math.factorial 함수보다 반복문을 사용한 방법이 약 두배정도 빠르다.
'Programming > python' 카테고리의 다른 글
[Daily 코테] 백준 1463번: 1로 만들기 (다이나믹 프로그래밍) (1) | 2023.11.24 |
---|---|
[Daily 코테] 백준 2609번: 최대공약수와 최소공배수 (0) | 2023.11.09 |
[Daily 코테] 백준 1417번: 국회의원 선거 (0) | 2023.10.30 |
[Daily 코테] 백준 1380번: 귀걸이 (1) | 2023.10.28 |
[Daily 코테] 백준 1343번: 폴리오미노 (0) | 2023.10.27 |