# @param {Integer[]} cost # @return {Integer} def min_cost_climbing_stairs(cost) def get(cost, k) if k < 0 || k >= cost.size then return 0 end return cost[k] end i = cost.size - 1 while i >= 0 do cost[i] += [get(cost, i + 1), get(cost, i + 2)].min i -= 1 end return cost.take(2).min end RSpec.describe "min_cost_climbing_stairs" do it "of [10,15,20] is 15" do expect(min_cost_climbing_stairs([10,15,20])).to eq(15) end it "of [1,100,1,1,1,100,1,1,100,1] is 6" do expect(min_cost_climbing_stairs([1,100,1,1,1,100,1,1,100,1])).to eq(6) end end