0
0

自分用にAtCoderの解答をまとめていきます。誤った情報があったら、申し訳ございません。

覚えること

  • StringBuilderクラス
    StringクラスはImmutable(不変)なクラスであるため、変更ができない。そのため、StrigBuilderで変更できるようにする。今回の例だと、reverseメソッドで逆順にする。toString()でString型に戻すこともできる。

  • startWithメソッド
    Stringクラスのメソッド。文字列が指定された部分文字列で始まるかどうかを判定することができる。

  • 逆から考える
    今回の例だと、前から考えるとprefixな関係になってしまう。そのため、逆から考えると、楽に処理することができる。

コード

ABC049C_Daydream
import java.util.Scanner;

public class ABC049C_Daydream {
    public static void main(String[] args) {

        try (Scanner sc = new Scanner(System.in)) {
            String S = sc.nextLine();

            String[] divide = { "dream", "dreamer", "erase", "eraser" };

            S = new StringBuilder(S).reverse().toString();
            for (int i = 0; i < 4; i++) {
                divide[i] = new StringBuilder(divide[i]).reverse().toString();
            }

            boolean can = true;
            for (int i = 0; i < S.length();) {
                boolean canDivide = false;
                for (int j = 0; j < 4; j++) {
                    String d = divide[j];
                    if (S.startsWith(d, i)) {
                        canDivide = true;
                        i += d.length();
                    }
                }
                if (!canDivide) {
                    can = false;
                    break;
                }
            }

            if (can) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }

        }

    }

}

参考にしたサイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0