結果

問題 No.227 簡単ポーカー
ユーザー cccccc
提出日時 2022-08-10 11:59:18
言語 C#
(.NET 8.0.203)
結果
AC  
実行時間 61 ms / 5,000 ms
コード長 2,076 bytes
コンパイル時間 8,822 ms
コンパイル使用メモリ 168,312 KB
実行使用メモリ 186,748 KB
最終ジャッジ日時 2024-09-20 16:07:40
合計ジャッジ時間 10,475 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 60 ms
30,720 KB
testcase_01 AC 61 ms
31,616 KB
testcase_02 AC 58 ms
30,720 KB
testcase_03 AC 60 ms
31,744 KB
testcase_04 AC 58 ms
30,848 KB
testcase_05 AC 58 ms
30,592 KB
testcase_06 AC 58 ms
30,720 KB
testcase_07 AC 61 ms
31,584 KB
testcase_08 AC 56 ms
30,720 KB
testcase_09 AC 55 ms
30,720 KB
testcase_10 AC 57 ms
30,848 KB
testcase_11 AC 56 ms
30,592 KB
testcase_12 AC 59 ms
31,616 KB
testcase_13 AC 57 ms
186,748 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.csproj を復元しました (94 ms)。
MSBuild のバージョン 17.9.6+a4ecab324 (.NET)
/home/judge/data/code/Main.cs(61,21): warning CS8632: '#nullable' 注釈コンテキスト内のコードでのみ、Null 許容参照型の注釈を使用する必要があります。 [/home/judge/data/code/main.csproj]
/home/judge/data/code/Main.cs(27,32): warning CS8509: この switch 式では入力型の可能な値がすべて扱われるわけではありません (すべてが網羅されているわけではありません)。たとえば、パターン '""' がカバーされていません。 [/home/judge/data/code/main.csproj]
/home/judge/data/code/Main.cs(45,32): warning CS8509: この switch 式では入力型の可能な値がすべて扱われるわけではありません (すべてが網羅されているわけではありません)。たとえば、パターン '0' がカバーされていません。 [/home/judge/data/code/main.csproj]
  main -> /home/judge/data/code/bin/Release/net8.0/main.dll
  main -> /home/judge/data/code/bin/Release/net8.0/publish/

ソースコード

diff #

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();

        // 配役数判定
        var tmp = check.RoleDuplicate(getCard);
        //Console.WriteLine(tmp.Count);

        if (tmp.Count == 0)
        {
            Console.WriteLine("NO HAND");
        }
        else
        {
            // 配役取得
            if (tmp.Count > 1)
            {
                var role = string.Join(":", tmp);
                var ans = role switch
                {
                    "3:2" => "FULL HOUSE",
                    "2:3" => "FULL HOUSE",
                    "2:2" => "TWO PAIR",
                    "3" => "THREE CARD",
                    "2" => "TWO PAIR",
                    "1" => "ONE PAIR",
                    "5" => "NO HAND",
                    "4" => "NO HAND"
                };
                Console.WriteLine(ans);
            }
            else
            {
               // Console.WriteLine(tmp[0]);
                var role = tmp[0];
                
                var ans = role switch
                {
                    3 => "THREE CARD",
                    2 => "ONE PAIR",
                    1 => "ONE PAIR",
                    5 => "NO HAND",
                    4 => "NO HAND"
                };
                Console.WriteLine(ans);
            }
        }
    }
}
class CastingCards
{
    // 役判定(重複数の取得)
    public List<int>? RoleDuplicate(List<int> cards)
    {
        var duplicates = cards.GroupBy(x => x)
        .Where(x => x.Count() > 1)
        .ToDictionary(x => x.Key, y => y.Count());
        //Console.WriteLine(string.Join(":", duplicates));
        // Dictionary型をList型に変換
        List<int> valsList = duplicates.Values.ToList();
        //Console.WriteLine(valsList.Count);
        //Console.WriteLine(valsList[0]);
        return valsList;
    }
}
0