이그렉과 괄호 트리
시간 제한2초메모리 제한1024 MB
여는 괄호가 n개인 올바른 괄호 문자열을 후위 순회로 만드는 순서 있는 괄호 트리의 개수를 10^9+7로 나눈 나머지로 구합니다.
문제
모두가 알다시피 픽시키 중에서 이그렉이 학교에서 가장 똑똑하다. 그도 우리처럼 어려운 문제 푸는 것을 좋아한다. 최근 그는 트리, 그중에서도 괄호 트리에 관심을 갖게 되었지만, 생각보다 까다로웠다. 아래는 그가 풀지 못한 문제 중 하나다.
괄호 트리는 루트가 있는 트리다. 각 정점에는 여는 괄호 또는 닫는 괄호가 적혀 있다. 각 정점의 자식은 순서가 정해져 있고, 각 자식도 괄호 트리다.
는 괄호 트리 의 루트를, 는 정점 에 적힌 괄호를 나타낸다.
두 괄호 트리 와 는 와 에 적힌 괄호가 같고, 두 루트의 자식 수가 같으며, 모든 에 대해 의 번째 자식과 의 번째 자식이 동치일 때 동치라고 한다.
괄호 트리의 정점 에 대해 다음과 같이 재귀 함수 를 정의한다.
가 리프이면 이다.
그렇지 않으면 이다. 여기서 는 의 자식을 순서대로 나열한 것이다.
이 함수의 결과는 여는 괄호와 닫는 괄호로 이루어진 문자열이다.
가 여는 괄호를 개 가진 올바른 괄호 문자열이 되도록 하는 서로 다른 괄호 트리 는 몇 개인가?
입력
정수 ()이 한 줄에 주어진다. 이는 를 적용해서 얻은 괄호 문자열에 들어 있는 여는 괄호의 개수다.
출력
답을 로 나눈 나머지를 한 줄에 출력한다.