【ABC149 B】「Greedy Takahashi」を解く【Python3】

abc149b

「AtCoder」解説一覧へ

高橋君が行動を終えたのち、最終的に高橋君と青木君が持っているクッキーの枚数を求める問題です。

高橋君は A 枚のクッキー、青木君は B のクッキーを持っており、高橋君は K 回行動します。

提出
a, b, k = map(int, input().split())

a_ans = max(0, a-k)
b_ans = max(0, b-max(0, k-a))

print(a_ans,b_ans)

高橋君のクッキーを先に消費するので、最後に高橋君が持っている枚数は、「0」か「a-k」のどちらか大きい方です(max()関数を使っています)。

「a-k」がマイナスであれば、0枚となります。

最後に青木君が持っているクッキーも同じように「0」か「b – (高橋君の残った行動数)」のどちらか大きい方になります。

「高橋君の残った行動数」は「0」か「k-a」の大きい方です。

split()メソッド

split()メソッドは、区切り文字を指定して、文字列を分割します。

区切り文字を指定しない場合、空白、タブ、改行で分割されます。

str.split("区切り文字")

map()関数

map()関数は、イテラブル(リストやタプルなど)の各要素に関数の処理を適用します。

map(関数、イテラブル)

if文を使って場合分けしても求めることができます。

提出
a, b, k = map(int, input().split())
a_ans = 0
b_ans = 0

if a > k:
    a_ans = a - k
    b_ans = b
elif b > k-a:
    b_ans = b-(k-a)

print(a_ans, b_ans)

【ABC149】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です