[백준/Python] 1010. 다리놓기

띵슈롱·2023년 10월 18일
0

PS(Problem Solving)

목록 보기
2/17

문제

문제 접근

왼쪽에 n개의 사이트가 있고 m개의 사이트가 있다고 가정해봤을때
n의 입장에선 m개를 선택할수 있고,
n+1 입장에선 m-1개를 선택할수 있다.
(m-1 개를 선택하는 이유는 m개를 선택하면 처음 선택한 사이트랑 중복이 일어날수 있기 때문)

따라서 n에서 m개를 선택하는 조합 문제이다.

문제풀이 1

파이썬에 조합 모듈이 있어 해당 모듈을 사용해 풀려고 시도를 했다.

from itertools import combinations

하지만 이 모듈의 인자는 배열이 들어와야 해서 실패했고 내가 직접 조합을 구현했다.

문제 풀이 2

t = int(input())

for _ in range(t):
    n,m = map(int, input().split())
    r = int(1)
    a= int(1)
    
    for i in range(n,0,-1):
        r = r * i
        
    for j in range(n):
        a = a * m
        m -= 1
        
    print(a//r)

나중에 생각해보니 직접 구현을 안 하고 math에서 지원하는 펙토리얼 함수를 사용했으면 더 쉽고 간결하게 짤 수 있을거 같다.

profile
어떻게 하는겨?

0개의 댓글