Все задачи
Легко Решено: 0 Процент решений: 0%

Правила банковского счёта

Защитите баланс счёта с помощью правил пополнения и снятия, отклоняя недопустимые операции.

Чему вы научитесь

  • Менять состояние только через методы
  • Отклонять неверные суммы и уход в минус
  • Считать отклонённые операции

Условие

Encapsulation keeps an object's data private and only changes it through methods that enforce the rules. Баланс банковского счёта может изменяться только через deposit and withdraw.

Start with a balance of 0 and process the operations, each deposit <amount> or withdraw <amount>:

  • An amount that is 0 or negative is rejected.
  • A withdrawal larger than the current balance is rejected.
  • Otherwise the balance changes.

Implement bank_account_rules(operations).

Input

operations: Операции в заданном порядке.

Output

Return [final_balance, rejected_count].

Ограничения

0 ≤ число операций ≤ 100,000

−10^9 ≤ сумма ≤ 10^9

Примеры

Пример 1
Ввод:
operations = ["deposit 100", "withdraw 30", "withdraw 200"]

Ожидаемый вывод:
expected = [70, 1]
Ввод:
std::vector<std::string> operations = {"deposit 100", "withdraw 30", "withdraw 200"};

Ожидаемый вывод:
std::vector<long long> expected = {70, 1};
Ввод:
string[] operations = new string[] {"deposit 100", "withdraw 30", "withdraw 200"};

Ожидаемый вывод:
long[] expected = new long[] {70, 1};

Пояснение

100 − 30 оставляет 70; снятие 200 увело бы счёт в минус, поэтому отклонено: [70, 1].

Пример 2
Ввод:
operations = ["deposit -5", "withdraw 0", "deposit 10"]

Ожидаемый вывод:
expected = [10, 2]
Ввод:
std::vector<std::string> operations = {"deposit -5", "withdraw 0", "deposit 10"};

Ожидаемый вывод:
std::vector<long long> expected = {10, 2};
Ввод:
string[] operations = new string[] {"deposit -5", "withdraw 0", "deposit 10"};

Ожидаемый вывод:
long[] expected = new long[] {10, 2};

Пояснение

Отрицательный вклад и нулевое снятие отклонены; последний вклад проходит: [10, 2].

Как подступиться

Сначала попробуйте сами, затем открывайте подсказки по одной.

Подсказка 1

Держите баланс закрытым и меняйте его только в deposit и withdraw.

Подсказка 2

Первым делом отклоняйте суммы, равные 0 или меньше.

Подсказка 3

Снятие не может опустить баланс ниже нуля.

Ожидаемая сложность

время O(число операций), доп. память O(1)

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.