티스토리 뷰

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 함수보다 반복문을 사용한 방법이 약 두배정도 빠르다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
글 보관함