AtCoder ABC 129 B – Balance Python解説
Balance
1 から N の番号がついた N 個の重りがあり、番号 i の重りの重さは Wi です。
AtCoder Beginner Contest 「」
これらの重りを、番号が T 以下の重り と 番号が T より大きい重りの 2 グループに分けることを考え、
それぞれのグループの重さの和を S1,S2 とします。
このような分け方全てを考えた時、S1 と S2 の差の絶対値の最小値を求めてください。
グループに分ける際の分割位置を端から試していく。あとはmin関数で最小値になっているか確認すれば大丈夫です。
n = int(input())
w = list(map(int, input().split()))
ans = 10000
for i in range(n):
s1 = sum(w[:i])
s2 = sum(w[i:])
ans = min(ans, abs(s1 - s2))
print(ans)
for文で分割位置を端から見ています。分割にはスライスを使うと簡単です。グループ分けをしたらsum関数でグループの重さの和を求め、最小値を更新しているか確認します。