結果

問題 No.2926 Botaoshi
コンテスト
ユーザー Polaris2124
提出日時 2024-10-12 16:57:03
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 109 ms / 2,000 ms
コード長 1,091 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 316 ms
コンパイル使用メモリ 85,248 KB
実行使用メモリ 102,272 KB
最終ジャッジ日時 2026-04-29 19:39:49
合計ジャッジ時間 5,642 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 42
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys
import math
from itertools import product, permutations, combinations, accumulate
from heapq import heapify, heappush, heappop
from collections import deque, defaultdict, Counter
from bisect import bisect, bisect_left, bisect_right
from copy import copy, deepcopy
#from sortedcontainers import SortedSet, SortedList, SortedDict

sys.setrecursionlimit(10**7)
INF = float('inf')
LINF = 1 << 60
MOD = 998244353

def mii():
    return map(int, sys.stdin.readline().split())

N = int(input())
S = input()

# L, R, U
dp = [[0]*3 for _ in range(N)]
if S[0] == "L":
    dp[0][0] = 1
elif S[0] == "R":
    dp[0][1] = 1
elif S[0] == "U":
    dp[0][2] = 1
else:
    dp[0][0] = 1
    dp[0][1] = 1
    dp[0][2] = 1

for i in range(N-1):
    if S[i+1] == "L":
        dp[i+1][0] = (dp[i][0] + dp[i][2]) % MOD
    elif S[i+1] == "R":
        dp[i+1][1] = sum(dp[i]) % MOD
    elif S[i+1] == "U":
        dp[i+1][2] = sum(dp[i]) % MOD
    else:
        dp[i+1][0] = (dp[i][0] + dp[i][2]) % MOD
        dp[i+1][1] = sum(dp[i]) % MOD
        dp[i+1][2] = sum(dp[i]) % MOD

print(sum(dp[N-1]) % MOD)
0