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

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

AtCoder ABC 229 A - First Grid (7Q, 灰色, 100 点)

上手に考えよう!

問題概要

2 × 2 グリッドが与えられる。各マスは白黒に塗られている。

黒色マスの文字は '#' で与えられ、白色マスの文字は '.' で与えられる。黒色マスがすべて連結しているかどうかを判定せよ。

解法

まず、2 × 2 のグリッドの各マスを白黒に塗る方法が全部で何通りあるかを考えよう。

マスは 4 個あるので、白黒に塗る方法は

 2^{4} = 16 通りあります。

そのうち「黒色マスが連結でないもの」をすべて求めよう。それらは次の 2 通りである。

よって、この 2 つの場合に該当すれば "No" を出力し、それ以外は "Yes" を出力すればよい。

コード

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

int main() {
    string S, T;
    cin >> S >> T;
    if (S == "#." && T == ".#") cout << "No" << endl;
    else if (S == ".#" && T == "#.") cout << "No" << endl;
    else cout << "Yes" << endl;
}