만드는 중입니다

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

괄호 교환

시간 제한1.5초메모리 제한1024 MB

요약
괄호 문자열에서 위치 집합 S 안의 괄호를 자유롭게 섞어 올바른 괄호 문자열을 만들 수 있는 S의 개수를 998244353으로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 조합론, 문자열
정답자
아직 제출이 없습니다

문제

여는 괄호 NN개와 닫는 괄호 NN개로 이루어진 괄호 수열이 주어진다. SS는 11 이상 2N2N 이하의 정수로 이루어진 공집합이 아닌 집합이다. SS에 속한 두 위치를 골라 그 위치의 괄호를 서로 바꿀 수 있다. 두 위치는 서로 인접하지 않아도 된다.

이 연산을 임의의 횟수만큼 반복하여 올바른 괄호 수열을 만들 수 있는 SS의 개수를 구하라.

입력

첫 번째 줄에 정수 NN이 주어진다.

두 번째 줄에는 ( 또는 )로 이루어진 길이 2N2N의 괄호 문자열이 주어진다.

출력

가능한 집합 SS의 개수를 998 244 353998\,244\,353으로 나눈 나머지를 출력한다. 998 244 353998\,244\,353은 소수이다.

제한

  • 1≤N≤30001 \leq N \leq 3000
  • 주어진 괄호 문자열에는 여는 괄호 NN개와 닫는 괄호 NN개가 들어 있다.

예제2

  1. 예제 1

    입력
    3
    ())(()
    
    예상 출력
    36
    
  2. 예제 2

    입력
    6
    ()))(())()((
    
    예상 출력
    1536