Сколько коробок?

Вы работаете на фабрике. Ваша задача — забирать товары с конвейера и паковать их в коробки. Каждая коробка выдерживает максимум 10 кг.

Напишите функцию, которая будет принимать список весов отдельных товаров (в кг) и возвращать количество коробок, в которые можно упаковать все товары с этими весами.

В списке всегда будет как минимум один элемент. Все веса будут меньше или равны 10 кг. Упаковываться товары должны в том порядке, в котором стоят в списке.

Пример

boxes([2, 1, 2, 5, 4, 3, 6, 1, 1, 9, 3, 2]) ➞ 5

# Box 1 = [2, 1, 2, 5] (10kg)
# Box 2 = [4, 3] (7kg)
# Box 3 = [6, 1, 1] (8kg)
# Box 4 = [9] (9kg)
# Box 5 = [3, 2] (5kg)

Варианты решения

def boxes(weights):
    spaces = 10
    boxes = 1
    for i in weights:
        if i <= spaces:
            spaces -= i
        else:
            boxes += 1
            spaces = 10 - i
    return boxes
def boxes(w):
    k, s = 0, 0
    for i in w:
        s += i
        if s > 10: k, s = k + 1, i
    return k + 1