結果
| 問題 | No.2373 wa, wo, n | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2023-07-07 22:38:55 | 
| 言語 | D (dmd 2.109.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 5 ms / 2,000 ms | 
| コード長 | 1,044 bytes | 
| コンパイル時間 | 4,636 ms | 
| コンパイル使用メモリ | 169,792 KB | 
| 実行使用メモリ | 5,376 KB | 
| 最終ジャッジ日時 | 2024-07-21 18:52:55 | 
| 合計ジャッジ時間 | 5,852 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 39 | 
ソースコード
import std;
void main () {
    int N = readln.chomp.to!int;
    string S = readln.chomp;
    solve(N, S);
}
void solve (int N, string S) {
    string[] candidate = ["wa", "wo", "n"];
    while (true) {
        // base case
        if (S.length == 0) {
            break;
        }
        if (S[0] == '?' && S.length == 1) {
            S = [];
            break;
        }
        if (S[0] == '?' && S[1] == '?') {
            S = S[1..$];
            continue;
        }
        // search("n"は最後の手段)
        bool match;
        foreach (cc; candidate) {
            match = true;
            foreach (i; 0..cc.length) {
                if (S[i] != '?' && S[i] != cc[i]) {
                    match = false;
                    break;
                }
            }
            if (match) {
                S = S[cc.length..$];
                break;
            }
        }
        if (!match) {
            break;
        }
    }
    if (S.length == 0) {
        writeln("Yes");
    } else {
        writeln("No");
    }
}
            
            
            
        