Volver a los desafíos
Fácil 0 resueltos 0% de aceptación

Reglas de una cuenta bancaria

Protege el saldo de una cuenta con reglas de depósito y retiro, rechazando operaciones inválidas.

Lo que aprenderás

  • Cambiar el estado solo mediante métodos
  • Rechazar importes no válidos y descubiertos
  • Contar las operaciones rechazadas

Problema

Ver original (inglés)

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

Ejemplo 1
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].

Ejemplo 2
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.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.