AtCoder ABC 186 B – Blocks on Grid Python解説
Blocks on Grid
縦 H マス、横 W マスのマス目があります。上から i 行目、左から j 列目のマスには、
AtCoder Beginner Contest 「Blocks on Grid」
ブロックが Ai,j個あります。
どのマスにも同じ個数のブロックがある状態にするには、最小で何個のブロックを取り除けばよいでしょうか?
ブロックを取り除いて、すべてのマスのブロック数を同じにするということなので、ブロックは最小値に揃えることになります。ですので、入力からブロックの最小値を取得し、各マスのブロック数と最小値との差をカウントしていきます。
h, w = map(int, input().split())
li = []
min_a = 100
for _ in range(h):
a = list(map(int, input().split()))
min_a = min(min(a), min_a)
li.append(a)
cnt = 0
for i in range(h):
for j in range(w):
cnt += li[i][j] - min_a
print(cnt)
for文の中では各マスのブロック数を受け取っていきます。そして、min_aにブロック数の最小値を入れます。2つ目のfor文では、cnt += li[i][j] – min_aで各マスのブロック数と最小値との差をcntに加えています。最後にcntを出力して完了です。