@Unknown672

Получаю ошибку в простом алгоритме для задачи на codewars. vasya — clerk?

Сама задача:
5df9e2d32cd3c277556058.png

Мой код:
def tickets(people):
    money = 0
    
    for ticket in people:
        if ticket == 25:
            money += ticket
        else:
            if money >= ticket:
                money += 25
                money -= ticket - 25
            else:
                return "NO"
    
    return "YES"


Почему я получаю ошибки?
  • Вопрос задан
  • 573 просмотра
Пригласить эксперта
Ответы на вопрос 2
@yavaskript
а какие ошибки вы получаете? Мне кажется, что это из-за того, что вы 2 раза считаете стоимость билета - 1) прибавляете к money и 2) вычитаете из ticket. Попробуйте не вычитать из ticket 25
Ответ написан
Комментировать
@o5a
if money >= ticket:
                money += 25
                money -= ticket - 25

С каждым покупателем прибавляется заплаченная купюра за вычетом сдачи, т.е. 2-я строка должна быть money += ticket, что сократит обе строки до money += 25, что логично, ведь мы с каждым проданным билетом увеличиваем кассу только на цену билета.
Но тут еще другая проблема с таким подходом: он не учитывает номиналы купюр в кассе. Например, для последовательности [25, 25, 50, 50, 100] к последнему покупателю в кассе будет 100 долларов, но сдачу оплатить не сможем, т.к. это 2 купюры по 50. Следовательно, нужно учитывать не просто сумму в кассе, а номиналы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы