Problema
Encapsulation mantiene los datos de un objeto privados y solo los cambia mediante métodos que hacen cumplir las reglas. El saldo de una cuenta bancaria solo puede cambiar mediante deposit y withdraw.
Empieza con un saldo de 0 y procesa las operaciones, cada deposit <amount> o withdraw <amount>:
- Una cantidad que sea 0 o negativa se rechaza.
- Un retiro mayor que el saldo actual se rechaza.
- En caso contrario, el saldo cambia.
Implementa bank_account_rules(operations).
Entrada
operations: Las operaciones, en orden.
Salida
Devuelve [final_balance, rejected_count].
Restricciones
0 ≤ número de operaciones ≤ 100,000
−10^9 ≤ importe ≤ 10^9
Ejemplos
Entrada:
operations = ["deposit 100", "withdraw 30", "withdraw 200"]
Salida esperada:
expected = [70, 1]
Entrada:
std::vector<std::string> operations = {"deposit 100", "withdraw 30", "withdraw 200"};
Salida esperada:
std::vector<long long> expected = {70, 1};
Entrada:
string[] operations = new string[] {"deposit 100", "withdraw 30", "withdraw 200"};
Salida esperada:
long[] expected = new long[] {70, 1};
Explicación
100 − 30 deja 70; retirar 200 sobregiraría la cuenta, así que se rechaza: [70, 1].
Entrada:
operations = ["deposit -5", "withdraw 0", "deposit 10"]
Salida esperada:
expected = [10, 2]
Entrada:
std::vector<std::string> operations = {"deposit -5", "withdraw 0", "deposit 10"};
Salida esperada:
std::vector<long long> expected = {10, 2};
Entrada:
string[] operations = new string[] {"deposit -5", "withdraw 0", "deposit 10"};
Salida esperada:
long[] expected = new long[] {10, 2};
Explicación
El depósito negativo y el retiro cero se rechazan; el último depósito sí tiene éxito: [10, 2].
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Mantén el saldo privado y cámbialo solo en deposit y withdraw.
Pista 2
Rechaza primero los importes de 0 o menos.
Pista 3
Un retiro no puede dejar el saldo por debajo de cero.
Complejidad esperada
tiempo O(número de operaciones), espacio extra O(1)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.