Sunday, April 19, 2015

Project Euler #15 - Lattice paths

격자 이동 - 20*20인 격자의 왼쪽 위에서 오른쪽 아래로 가는 경로는 몇가지인가? 단, 오른쪽, 아래로만 이동할 수 있다.

오른쪽으로 20칸, 아래로 20칸 이동하는 문제이다. 40번 이동/20번 오른쪽/20번 아래쪽은 변함이 없다. 40칸의 자리가 있고, 그 중 오른쪽으로 이동할 20칸을 어떻게 할당하느냐의 문제이고 간단히 40C20을 계산하면 된다.
40!/20!/20! 계산 문제인데.. 40!는 큰 숫자이고 다른 언어라면 큰 숫자의 메모리/정확도 문제 때문에.. 40/20*39/13/3*38/19/2*.... 이런 걸 만들어야 할 수도 있다. 하지만 파이썬은 큰 정수를 다루는 데 전혀~ 문제가 없다.

from operator import mul
print reduce(mul,range(21,41))/reduce(mul,range(1,21))

파이썬 만세!

No comments: