【ABC186 B】「Blocks on Grid」を解く【Python3】

「AtCoder」解説一覧へ

縦H、横Wのマス目にある Ai,j 個のブロックを、すべて同じ個数にしたい場合、最小でいくつ取り除けばいいのか、答える問題です。

提出
h, w = map(int, input().split())
num = 0
mi = 100
g = 0

for i in range(h):
    a = list(map(int, input().split()))
    mi = min(mi, min(a))
    g += sum(a)

ans = g-h*w*mi
print(ans)

縦H、横Wを整数で入力し、h, w とします。

1列分の Ai,j をリストで取得し、最小値と合計値を取得します。

最小値と「mi」を比較して小さいほうを新しい「mi」とします。

合計値は「g」に加えていきます。

for文を終えたとき、mi にはすべての Ai,j の最小値が入っています。

すべての Ai,j が同じ数値(最小値mi)になる必要があるので、Ai,j の合計値gに「マス目×mi」を引いたものが答えになります。

【ABC186】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

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