結果

問題 No.2031 Colored Brackets
ユーザー LyricalMaestro
提出日時 2024-08-17 18:10:15
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,076 ms / 2,000 ms
コード長 1,388 bytes
コンパイル時間 423 ms
コンパイル使用メモリ 81,920 KB
実行使用メモリ 81,280 KB
最終ジャッジ日時 2024-08-17 18:10:25
合計ジャッジ時間 8,684 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

## https://yukicoder.me/problems/no/2031

MOD = 998244353


def main():
    N = int(input())
    S = input()

    dp = {(0, 0): 1}
    for s in S:
        new_dp = {}
        if s == "(":
            for key, value in dp.items():
                new_key = (key[0] + 1, key[1])
                if new_key not in new_dp:
                    new_dp[new_key] = 0
                new_dp[new_key] += value
                new_dp[new_key] %= MOD

                new_key = (key[0], key[1] + 1)
                if new_key not in new_dp:
                    new_dp[new_key] = 0
                new_dp[new_key] += value
                new_dp[new_key] %= MOD
        else:
            for key, value in dp.items():
                if key[0] > 0:
                    new_key = (key[0] - 1, key[1])
                    if new_key not in new_dp:
                        new_dp[new_key] = 0
                    new_dp[new_key] += value
                    new_dp[new_key] %= MOD

                if key[1] > 0:
                    new_key = (key[0], key[1] - 1)
                    if new_key not in new_dp:
                        new_dp[new_key] = 0
                    new_dp[new_key] += value
                    new_dp[new_key] %= MOD
        dp = new_dp
    
    if (0, 0) in dp:
        print(dp[(0, 0)])
    else:
        print(0)

            


        

if __name__ == "__main__":
    main()
0