結果
問題 |
No.1702 count good string
|
ユーザー |
![]() |
提出日時 | 2025-07-10 02:17:58 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 111 ms / 2,000 ms |
コード長 | 602 bytes |
コンパイル時間 | 16,302 ms |
コンパイル使用メモリ | 235,588 KB |
実行使用メモリ | 6,400 KB |
最終ジャッジ日時 | 2025-07-10 02:18:18 |
合計ジャッジ時間 | 17,937 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 47 |
ソースコード
package main import . "fmt" func main() { var n int var s string Scan(&n,&s) dp := make([][]int, 2) for i := range dp { dp[i] = make([]int, len("yukicoder")+1) } const Mod int = 1e9+7 t := make(map[rune]int) for i, ch := range "yukicoder" { t[ch] = i } dp[0][0] = 1 for _, ch := range s { if i, ok := t[ch]; ok { dp[0][i+1] = (dp[0][i+1] + dp[0][i]) % Mod dp[1][i+1] = (dp[1][i+1] + dp[1][i]) % Mod } else if ch == '?' { for j := 0; j < len(t); j++ { dp[1][j+1] = (dp[1][j+1] + dp[0][j]) % Mod } } } ans := (dp[0][len(t)] + dp[1][len(t)]) % Mod Println(ans) }