【ABC153 C】「Fennec vs Monster」を解く【Python3】

abc153c

「AtCoder」解説一覧へ

N体のモンスターと戦うフェネックが、モンスターに勝つまで行う攻撃の回数の最小値を求める問題です。

フェネックはK回まで必殺技を使え、その回数は攻撃の回数に含まれません。

必殺技では、モンスターの体力を0にすることができます。

対して攻撃は、モンスターの体力を1減らします。

提出
n,k = map(int,input().split())
h = list(map(int,input().split()))

h_sort = sorted(h, reverse=True)
ans = sum(h_sort[k:])

print(ans)

最小値を求めるために、必殺技は体力が大きいモンスターに使います。

それぞれのモンスターの体力のリスト(配列)を降順(reverse=True)にソートして、攻撃で倒すモンスターの体力合計値を出します。

配列のK番目より下のモンスターは必殺技で倒すので、K以降の合計値です。

このほか、K以降をfor文を回して足していく、とかでもできますね。

まとめて書くとこんな感じです。

提出
n, k = map(int, input().split())
h = sum(sorted(list(map(int, input().split())), reverse=True)[k:])

print(h)

【ABC153】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

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