この手の問題は最初にソートすると考えやすいことが多い。
問題概要
5 枚のカードには数 が書かれている。これがフルハウスであるかを判定せよ。
なお、5 つの数がフルハウスであるとは、同じ数が書かれたカード 3 枚と、別の同じ数が書かれたカード 2 枚からなることをいう。
解法
5 つの数からなる配列を として、ソートし、小さい順に としよう。このとき、フルハウスであるのは次の 2 パターンがある。
これらを満たすかを判定すればよいこととなる。
コード
#include <bits/stdc++.h> using namespace std; int main() { vector<int> A(5); for (int i = 0; i < 5; ++i) cin >> A[i]; sort(A.begin(), A.end()); if (A[0] == A[1] && A[1] == A[2] && A[2] < A[3] && A[3] == A[4]) cout << "Yes" << endl; else if (A[0] == A[1] && A[1] < A[2] && A[2] == A[3] && A[3] == A[4]) cout << "Yes" << endl; else cout << "No" << endl; }