社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

AtCoder ABC003 B - AtCoderトランプ

atcoder.jp

使用言語は”Java8 (OpenJDK 1.8.0)”です。
取りあえず要件を満たすようにストレートに書いてみて、「こんな冗長なコードは通らないだろうな」と思ったら、一応結果はACでした。
解説を見ても、基本的なロジックは同じように思います。
AtCoder Beginner Contest 003 解説

import java.util.Scanner;
 
class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String S = sc.next();
    String T = sc.next();
    String[] arrS = S.split("");
    String[] arrT = T.split("");
    for (int i = 0; i < S.length(); i++) {
    // 同じ文字であるかをチェックする
      if (!arrS[i].equals(arrT[i])) {
        // もし S 側の文字が "@" だったら、T 側のもじが 'a','t','c','o','d','e','r' の何れであるかをチェックする
        if (arrS[i].equals("@")) {
          if (arrT[i].equals("a") || arrT[i].equals("t") || arrT[i].equals("c") || arrT[i].equals("o") || arrT[i].equals("d") || arrT[i].equals("e") || arrT[i].equals("r")) {
          } else {
            System.out.println("You will lose");
            System.exit(0);
          }
        // もし T 側の文字が "@" だったら、S 側のもじが 'a','t','c','o','d','e','r' の何れであるかをチェックする
        } else if (arrT[i].equals("@")){
          if (arrS[i].equals("a") || arrS[i].equals("t") || arrS[i].equals("c") || arrS[i].equals("o") || arrS[i].equals("d") || arrS[i].equals("e") || arrS[i].equals("r")) {
          } else {
            System.out.println("You will lose");
            System.exit(0);
          }
        } else {
          System.out.println("You will lose");
          System.exit(0);
        }
      }
    }
    // 最後まで NG のチェックにかからなければ、"You can win."
    System.out.println("You can win");
  }
}