いろんな解法が考えられる。
問題概要
4 枚のカードがあって、それぞれのカードには整数 が書かれている。
ここに 1 枚カードを加え、フルハウスとできるか判定せよ。
制約
考えたこと
色んな解法が考えられるが、この手のものは「ソート」が一例ではある。4 枚のカードの数値を小さい順に としたとき、「あと 1 枚でフルハウス」である条件は、
のいずれかが成り立つことである。ソートして、これらが成り立つかどうかを判定していけばよい。
コード
#include <bits/stdc++.h> using namespace std; int main() { vector<int> v(4); for (int i = 0; i < 4; i++) cin >> v[i]; sort(v.begin(), v.end()); if (v[0] < v[1] && v[1] == v[2] && v[2] == v[3]) cout << "Yes" << endl; else if (v[0] == v[1] && v[1] < v[2] && v[2] == v[3]) cout << "Yes" << endl; else if (v[0] == v[1] && v[1] == v[2] && v[2] < v[3]) cout << "Yes" << endl; else cout << "No" << endl; }