競技プログラミング

AtCoder Beginner Contest ABC309 A – Nine Swift

デンソークリエイトプログラミングコンテスト2023(AtCoder Beginner Contest 309)

AtCoder Beginner Contest ABC309 A – Nine

問題の要素解説

この問題では、2つのマスが隣接しているかどうかを判断するために、整数の差分と剰余を使用します。具体的には、B – Aが1であり、かつAが3の倍数でない場合に限り、2つのマスが隣接していると判断します。

解答戦略

問題は基本的に整数の差と剰余を計算するだけなので、解答戦略は直感的で、コードもシンプルです。

コードの解説

以下のコードは、まず標準入力から読み取った文字列をスペースで区切り、結果をIntに変換し、配列に格納します。その配列の最初の要素を変数Aに、次の要素を変数Bに割り当てます。そして、B – Aが1であり、かつAが3の倍数でない(つまり、最右端のマスでない)場合に”Yes”を、そうでない場合に”No”を出力します。

コード全文

let input = readLine()!.split(separator: " ").map { Int($0)! }
let A = input[0], B = input[1]
 
if (B - A == 1) && (A % 3 != 0) {
    print("Yes")
} else {
    print("No")
}

テストケースと実行結果

このコードをテストするためのいくつかのテストケースを以下に示します。

  • 入力: 1 2, 出力: Yes
  • 入力: 3 4, 出力: No

考察と最適化

このコードは簡単で効率的なため、特に最適化の必要はありません。

結論

本記事では、特定の3×3盤面上で2つのマスが左右に隣接しているかどうかを判定する問題を取り扱いました。これはSwiftを用いて非常にシンプルなコードで解決することが可能で、整数の差と剰余を用いることで簡単に解ける問題でした。

コメントとフィードバックの募集:記事の内容についてご質問やフィードバックがある場合は、お気軽にコメントしてください。皆さんの参加をお待ちしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です