BOJ/백준-1010-python

cosmos·2021년 6월 2일
2
post-thumbnail

문제📖

풀이🙏

  • 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다.
  • 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N,M이 주어진다.
  • 재원이가 각 테스트 케이스에 대해 최대한 많이 다리를 지을 수 있는 경우의 수를 출력하라.
    -> 조합(=combinations) 문제이다.
    -> 조합을 구현하면 풀 수 있다.

코드💻

# boj, 1010 : 다리 놓기, python3
# 정수론 및 조합론
# 다이나믹 프로그래밍
import sys

def factorial(num):
    if num <= 1:
        return num
    return factorial(num-1) * num


def bridge(n, m):
    if n == 1:
        return m
    if n == m:
        return 1
        
    return factorial(m) // (factorial(m-n) * factorial(n))
    
    
T = int(sys.stdin.readline())

for i in range(T):
    N, M = map(int, sys.stdin.readline().split())
    print(bridge(N, M))

결과😎

출처 && 깃허브📖

https://www.acmicpc.net/problem/1010
github

0개의 댓글