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

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

AtCoder ABC 062 A - Grouping (灰色, 100 点)

ちょっと面倒な問題

問題概要

1 以上 12 以下の整数  x, y が与えられる。これらが同じグループに属するかどうかを判定せよ。

解法

グループの番号を 0, 1, 2 などと名付けて、各整数をグループ番号に直す関数を用意するのが楽だと思う。

そして、 x, y の属するグループ番号を求めて、それらが一致するかどうかを調べれば OK。

#include <bits/stdc++.h>
using namespace std;

// グループ番号を求める
int group(int x) {
    if (x == 2) return 2;
    else if (x == 4 || x == 6 || x == 9 || x == 11) return 1;
    else return 0;
}

int main() {
    int x, y;
    cin >> x >> y;
    
    if (group(x) == group(y)) cout << "Yes" << endl;
    else cout << "No" << endl;
}