#카탈란 수와 올바른 괄호 경우의 수 찾기
Programming 2017. 10. 17. 20:30카카오 프로그래머스에 수록된 아래의 알고리즘 문제가 있다.
올바른 괄호의 경우의 수를 찾는 문제인데, 괄호 쌍이 5개일 때 경우의 수 찾다가 포기하고 결국 검색했다.
그러다 이 문제가 '카탈란 수'로 이루어져 있다는 것을 알게 되었다. 세상에... 참 별의 별 수가 다 있네 - _-;;;
어쨌든 이 수에 대한 설명은
요기에 잘 나와 있다.
요건 대각선이 만나지 않는 경의 수라고...
허참.. 정말 별 희한한 게 다 있다. 그저 신기할 따름이다.
아무튼, 카탈란 수를 구하기 위한 최종 공식은,
구하고자 하는 쌍이 n개이고, 총 경우의 수를 x라고 할 때,
이다.
겁나 간단하다 진짜... - _-;;;
def binomial(bin, n, k):
if n==k or k==0 : return 1
elif bin[n][k] > 0 : return bin[n][k]
else :
bin[n][k] = binomial(bin, n-1, k) + binomial(bin, n-1, k-1)
return bin[n][k]
def cataln(n) :
bin = [[0 for col in range(2*n + 1)] for row in range(2*n + 1)]
return binomial(bin, 2*n, n) - binomial(bin, 2*n, n+1)
print(cataln(5))
이 문제 해결하는 파이썬 코드다. 이것도 겁나 간단...
Top-Down 방식으로 풀었다. 이항계수 구하는 코드 말고는 뭐.. 딱히..
'Programming' 카테고리의 다른 글
#고정분할과 가변분할 (1) | 2017.10.18 |
---|---|
#단편화와 그 해결 기법 (0) | 2017.10.18 |
#Knapsack Problem (0) | 2017.10.16 |
#뮤텍스와 세마포어에 관해. (0) | 2017.10.13 |
#웹의 메소드 정리 (0) | 2017.10.04 |