AtCoder ABC 130 B – Bounding Python解説
Bounding
数直線上を N + 1 回跳ねるボールがあり、1 回目は 座標 D1=0, i 回目は 座標 Di=Di−1+Li−1(2≤i≤N+1) で跳ねます。
AtCoder Beginner Contest 「Bounding」
数直線の座標が X 以下の領域でボールが跳ねる回数は何回でしょうか。
1回目は座標0で跳ね、2回目以降は Li が加算されていきます。先にボールが跳ねる座標をすべて計算して、そのあとXの領域内で跳ねた回数を求めます。
n, x = map(int, input().split())
l = list(map(int, input().split()))
dp = [0] * (n + 1)
dp[0] = 0
cnt = 0
for i in range(1, n + 1):
dp[i] = dp[i - 1] + l[i - 1]
for i in dp:
if i <= x:
cnt += 1
print(cnt)
ボールが跳ねる回数はN+1と決まっているため、あらかじめ配列dpを用意し、for文を使ってボールが跳ねる座標を獲得しています。
n, x = map(int, input().split())
l = list(map(int, input().split()))
cnt = 1
d = 0
for i in l:
d += i
if d <= x:
cnt += 1
print(cnt)
上記のコードでも解けます。最初にcnt=1にしているのは座標0で跳ねる分をカウントしているからです。