We will find a way, we always have.

-interstellar

Problem Solving/백준

[백준] 1010번: 다리 놓기

Redddy 2022. 4. 17. 23:32

처음에는 단순히 itertoors에서 combinations를 import해서 사용했는데 예상했던대로 시간초과가 나왔다. (요즘 문제 푸는데 시간초과가 너무 많이 나와...ㅜ)

그래서! 조합을 combinations를 사용하는 것이 아니라 식을 factorial을 불러와서 조합의 경우의 수를 만들어 주었다.

 

📚 풀

1. math 모듈을 가져와 factorial을 사용한다.
2. mCn 을 factorial을 사용해서 만든다면 => (m!/(m-n)!)/n! 
3. 2번에서 사용한 식을 컴퓨터에서 실행하면 오차가 발생한다. (23 24 입력시 23.9999996이 나옴)
   그래서 어차피 몫과 값이 다를리가 없기 때문에 /가 아닌 //를 사용해준다.

💻 코드

import sys, math
input = sys.stdin.readline

for i in range(int(input().rstrip())):
    n, m = map(int, input().rstrip().split())
    print(math.factorial(m)/math.factorial(m-n)/math.factorial(n))

문제링크: https://www.acmicpc.net/problem/1010

'Problem Solving > 백준' 카테고리의 다른 글

[백준] 1037번: 약수  (0) 2022.04.20
[백준] 2179번: 비슷한 단어  (0) 2022.04.18
[백준] 1924번: 2007년  (0) 2022.04.14
[백준] 5397번: 키로거  (0) 2022.04.12
[백준] 1359번: 복권  (0) 2022.04.12