AtCoderをやって18

問題

atcoder.jp

自分の回答(不正解)

これだと1回多くカウントされちゃいますね。

n, x = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
b = 0
cnt = 0
a.each do |i|
  if b <= x
    b += i
    cnt += 1
  end
end
puts cnt

他の方回答

N,X = gets.chomp.split(" ").map(&:to_i)
arr = gets.chomp.split(" ").map(&:to_i)
sums = [0]
arr.each do |num|
  sums << sums[-1] + num
end
ans = 0
sums.each do |num|
  ans += 1 if num <= X
end
puts ans

下のやつは最初はcnt1つ少なくならない?と思ったけど、cnt = 1に設定してればいい訳ですね。自分頭硬いなー

n,x = gets.split.map(&:to_i)
ll = gets.split.map(&:to_i)

sum = 0
cnt = 1
1.upto(n) do |i|
  sum += ll[i-1]
  if sum <= x
    cnt += 1
  end
end
puts cnt