Lattice Paths
Starting in the top left corner of a grid, and only being able to move to the right and down, there are exactly routes to the bottom right corner.
How many such routes are there through a grid?
격자의 왼쪽 위 모서리에서 오른쪽 아래 모서리까지 가는 길의 개수를 찾는 문제이다.
움직일 수 있는 방향은 오른쪽과 아래 뿐이므로, 모든 경로의 길이는 40이 나올 것이고 오른쪽이 20번, 아래가 20번이 나와야한다. 즉 중복집합 순열이라는 뜻이다.
전체 경우의 수는 인데 오른쪽이 중복되는 경우가 , 아래가 중복되는 경우가 이 있으므로 를 계산해주면 된다.
그리고 격자의 수가 바뀔 경우도 대비해보자. 격자에서 모든 경로의 길이는 , 오른쪽이 번, 아래가 번 나와야 한다. 즉 길의 갯수는 다.
그렇다면 다음 순서를 통해 코드를 구현해보자.
//Python
# 팩토리얼
def factorial (n) :
factor = 1
for i in range(1, n+1):
factor *= i
return factor
# x*y 격자의 길이 몇개인지 출력
def find_routes (x, y):
routes = factorial(x+y) / (factorial(x) * factorial(y))
return int(routes)
print(find_routes(20, 20))
>>> 137846528820
오늘은 여기까지.
-2025.01.04-