3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

以下に、Pythonプログラムを解説します。

# じゃんけんの手の出し方
n, m = map(int, input().split())  # じゃんけんの回数 n と出す指の本数の合計 m を入力
s = input()  # 相手のじゃんけんの手を表す文字列 s を入力

# じゃんけんの手のカウントを初期化
enemy_g, enemy_c, enemy_p = 0, 0, 0
for v in s:
    if v == "G":
        enemy_g += 1  # 相手がグーを出す回数をカウント
    elif v == "C":
        enemy_c += 1  # 相手がチョキを出す回数をカウント
    else:
        enemy_p += 1  # 相手がパーを出す回数をカウント

ans = 0  # 勝つ回数の最大値を格納する変数
# 0 ≦ p ≦ m//5 の範囲で p(パーの回数)を全探索
for p in range(m // 5 + 1):
    c = (m - p * 5) // 2  # 指の本数の合計から p 回のパーを引いた後、残りをチョキの回数 c として計算
    g = n - p - c  # 残りのじゃんけんの回数をグーの回数 g とする
    
    if g < 0:
        continue  # グーの回数が負の値になった場合は無視
    if p * 5 + c * 2 != m:
        continue  # 出した指の本数が m に満たない場合は無視
    
    # 勝てる回数を計算して最大値を更新
    ans = max(ans, min(p, enemy_g) + min(c, enemy_p) + min(g, enemy_c))

print(ans)  # 最大勝利回数を出力

解説

  1. 入力値の取得

    n, m = map(int, input().split())
    s = input()
    
    • じゃんけんの回数 n と出す指の本数の合計 m を入力から取得します。
    • 相手のじゃんけんの手を表す文字列 s を入力から取得します。
  2. 相手の手のカウント

    enemy_g, enemy_c, enemy_p = 0, 0, 0
    for v in s:
        if v == "G":
            enemy_g += 1
        elif v == "C":
            enemy_c += 1
        else:
            enemy_p += 1
    
    • 相手の手の出し方をカウントします。enemy_g はグーの回数、enemy_c はチョキの回数、enemy_p はパーの回数です。
  3. 勝つ回数の最大値の計算

    ans = 0
    for p in range(m // 5 + 1):
        c = (m - p * 5) // 2
        g = n - p - c
        
        if g < 0:
            continue
        if p * 5 + c * 2 != m:
            continue
        
        ans = max(ans, min(p, enemy_g) + min(c, enemy_p) + min(g, enemy_c))
    
    • パーの回数 p を全探索し、各 p に対してチョキの回数 c とグーの回数 g を計算します。
    • グーの回数が負の値になる場合や、出した指の本数が m に満たない場合は無視します。
    • 勝てる回数を計算し、最大値を更新します。
  4. 結果の出力

    print(ans)
    
    • 勝つ回数の最大値を出力します。

このプログラムは、相手の手に対して最適な手を選び、出す指の本数の合計が m になるようにじゃんけんを行うことで、最大勝利回数を求めます。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?