けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 309 A - Nine (灰色, 100 点)

上手に整理しよう

問題概要

下図のような  3 \times 3 のグリッドが与えられる。

2 つの整数  A, B ( A \lt B を満たす) が与えられるので、これら 2 つの整数がグリッド上で左右に隣接しているかどうかを判定せよ。

考えたこと

2 つの数字が左右に隣接するのは、次の 6 パターンしかない

  •  A = 1, B = 2
  •  A = 2, B = 3
  •  A = 4, B = 5
  •  A = 5, B = 6
  •  A = 7, B = 8
  •  A = 8, B = 9

これらのいずれかに該当するかどうかを調べればよい。

コード

実装量を減らすために、次の条件を確認する方針をとった

  •  A 3, 6, 9 でないこと
  •  B - A == 1 であること
#include <bits/stdc++.h>
using namespace std;

bool isok(int A, int B) {
    if (A == 3 || A == 6 || A == 9) return false;
    return (B - A == 1);
}

int main() {
    int A, B;
    cin >> A >> B;
    
    if (isok(A, B)) cout << "Yes" << endl;
    else cout << "No" << endl;
}