using System; using System.Linq; using System.Collections.Generic; class Program { static void Main() { var getCard = Console.ReadLine().Split().Select(int.Parse).ToList(); // 配役判定用インスタンス生成 var check = new CastingCards(); // 役無し判定 //check.CheckDuplication(getCard); // 配役数判定 var tmp = check.RoleDuplicate(getCard); //Console.WriteLine(tmp.Count); if(tmp.Count == 0) { //check.CheckDuplication(getCard); Console.WriteLine("NO HAND"); } else { // 配役取得 var role = string.Join(":", tmp); // Console.WriteLine(role); var ans = role switch { "3:2" => "FULL HOUSE", "2:3" => "FULL HOUSE", "3" => "THREE CARD", "2" => "TWO CARD", "1" => "ONE PAIR", "5" => "NO HAND" }; // 出力 Console.WriteLine(ans); } } } class CastingCards { // 役なし判定(重複無しの場合) public void CheckDuplication(List cards) { var hashset = new HashSet(); foreach (var card in cards) { // 既に追加済みのキーがあればfalseになる if (hashset.Add(card) == false) { Console.WriteLine("NO HAND"); break; } } } // 役判定(重複数の取得) public List? RoleDuplicate(List cards) { var duplicates = cards.GroupBy(x => x) .Where(x => x.Count() > 1) .ToDictionary(x => x.Key, y => y.Count()); // Dictionary型をList型に変換 List valsList = duplicates.Values.ToList(); return valsList; } }