Dev/Algorithms
카탈란 수 Catalan number Python 구현
puff
2020. 3. 15. 19:00
https://www.acmicpc.net/problem/10422
이 문제를 풀면서 처음 알게된 수열이다.
뭐 위키피디아 같은데 보면 증명 다 볼 수 있는데, 코딩테스트에서 쓸 수 있을정도로만 알면 되니까 공식을 적는다.
Catalan(n) = 2n!/ ( n! * (n+1)! )
파이썬 코드는 다음과 같다.
import math
def catalan(n):
return math.factorial(2*n) // (math.factorial(n) * math.factorial(n+1))
1. 올바른 괄호 문자열의 갯수
https://www.acmicpc.net/problem/10422
2. 정다각형의 삼각형 분할
https://www.acmicpc.net/problem/7737
(물론 이걸로는 안풀리더라. 시간초과)
2-1. https://www.acmicpc.net/problem/1670
이 문제는 catalan(n//2) 를 하면 된다.
import math
import sys
def catalan(n):
return math.factorial(2*n) // (math.factorial(n) * math.factorial(n+1))
print(catalan(int(input())//2)%987654321)
2-2 https://www.acmicpc.net/problem/17268
참고:
https://brilliant.org/wiki/catalan-numbers/