問題
コンピュータと $ N $ 回じゃんけんをします。
コンピュータの出す手はあらかじめ分かっていて、“G”はグー、“C”はチョキ、“P”はパー を表します。
あなたが、$ N $ 回のじゃんけんで出した 指の本数の合計 がちょうど $ M $ 本になるようにじゃんけんをすると、最高で何回 じゃんけんに勝つことができるでしょうか。
解法・ソースコード
まず今回はじゃんけんの指の合計数を求める問題なので、順番は気にする必要がありません。
次に、じゃんけんで出せる指の合計数が決まっているので、パー(指5本)の回数が決まればチョキ(指2本)の回数が決まり、チョキの回数が決まればグー(指0本)の回数が決まります。
とういうことで、パーの出す回数について全探索を行えば解を導くことができます。
グー、チョキ、パーを自分が g, c, p
回、コンピュータが cnt_g, cnt_c, cnt_p
回出すとき、自分がじゃんけんに勝てる回数は最大で min (g, enemy_c) + min (c, enemy_p) + min (p, enemy_g)
回となります。
ただし次の2点に関して注意が必要です。
🔹 グーを出す回数がマイナスになっていない
🔹 指の本数が $ M $ 本になっている
[Google Colaboratory]
1 | #--------- 入力例1 ---------- |
[実行結果(入力例1)]
解:4
パーを1回、チョキを1回、グーを2回だすと、指の本数は全部で7本となり、最大4回 勝つことができます。
[実行結果(入力例2)]
解:3
パーを2回、チョキを0回、グーを3回だすと、指の本数は全部で10本となり、最大3回 勝つことができます。