水面下の夢

競プロやイラストに興味があります.メインブログがここ.同人サークル「かのらぶ」のページはこっち( https://yumechi0525.amebaownd.com ).ブログアイコンはYaQ(@8_9_00)さんから.

No.227 簡単ポーカー

回答

#43835 No.227 簡単ポーカー - yukicoder

手札が与えられるので,役を答える問題.
mapを使ってカードをまとめてあげると楽かと思います.
ッて思いましたが,これトランプで与えられる配列の長さも限られるので,リストで処理してもあまり変わらないかも….

役のフラグ立てですが,2ペアがいくつあるか,3ペアがいくつあるか数えてあげます.
これをうまくやると,下のように配列にまとめておいた答えにうまくアクセスすることができます.

これ最初if文とか使っていたのですが,最後うまくまとめられて良かったです….

dic = dict([])
for i in map(int, input().split()):
    if i in dic:
        dic[i] += 1
    else:
        dic.update({i:1})

twop, threec = 0, 0
for v in dic.values():
    if v == 2:
        twop += 1
    if v == 3:
        threec += 1

ans = ["NO HAND", "ONE PAIR", "TWO PAIR", "THREE CARD", "FULL HOUSE"]
print(ans[twop + threec * 3])