만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

괄호 복구

시간 제한1초메모리 제한512 MB

요약
길이가 L인 괄호 문자열 T 중, S와 각 문자열의 순서를 유지해 합쳤을 때 올바른 괄호 문자열이 되는 T의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 문자열, 그리디
정답자
아직 제출이 없습니다

문제

여는 괄호 (와 닫는 괄호 )로 이루어진 문자열 SS가 있다. 이때 다음 조건을 만족하는 문자열 TT의 개수를 구하려고 한다.

  • 조건 1. TT는 여는 괄호와 닫는 괄호로 이루어진 길이 LL인 문자열이다.
  • 조건 2. SS의 문자들과 TT의 문자들을 각각 내부에서의 순서를 유지하면서 합쳐서 올바른 괄호 문자열이 되게 할 수 있다.

예를 들어, SS = (()이고 L=3L = 3일 때 TT = ))(이면 1, 2, 6번째 문자를 SS의 문자로 하고 3, 4, 5번째 문자를 TT의 문자로 하여 (())()를 만들 수 있으므로 TT는 조건을 만족한다.

그러나 SS = )()이고 L=3L = 3일 때 TT = )((이면 SS와 TT를 합쳐 올바른 괄호 문자열을 만들 수 없으므로 TT는 조건을 만족하지 않는다.

조건을 만족하는 TT의 개수가 많아질 수 있으므로, 109+710^9+7로 나눈 나머지를 구한다.

입력

첫 번째 줄에 문자열 SS가 주어진다. SS는 길이가 1 이상 3,000 이하이며 (와 )로만 구성되어 있다. 두 번째 줄에 자연수 LL (1≤L≤3,0001 \le L \le 3{,}000)이 주어진다.

출력

첫 번째 줄에 문제의 정답을 출력한다.

힌트

위 입력 예제의 경우, 조건을 만족하는 TT는 ())와 )()의 2가지가 가능하다.

예제1

  1. 예제 1

    입력
    (
    3
    
    예상 출력
    2