Saltar al contenido

El precio que no puedes pagar

Enunciado

En el mercado del puerto de Tiro nadie da cambio: pagas justo o no te llevas nada. Un mercader revisa su bolsa antes de entrar y quiere saber cuál es el precio más chico que no podría pagar.

Escribe una función que reciba monedas, una lista con el valor de cada moneda (enteros positivos; puede venir vacía o con valores repetidos), y regrese un entero: el menor precio, de 1 en adelante, que ninguna combinación de monedas paga exacto. Cada moneda se usa una vez como mucho. Con 1, 2 y 5 pagas 1, 2 y 3 (1 + 2), pero no 4: la respuesta es 4.

Con la bolsa vacía no pagas ni 1, así que regresas 1.

Una pista: ve las monedas de la más chica a la más grande. Si con las que llevas vistas ya pagas cualquier precio del 1 al s, piensa qué precios nuevos te abre la siguiente, y cuándo deja un hueco.

Ejemplos

  • El del ejemplo

    [1, 2, 5] → 4

  • Puras de 1

    [1, 1, 1, 1] → 5

  • Sin moneda de 1

    [2, 3] → 1

  • Un hueco después de varias

    [1, 1, 3, 7] → 6

  • En desorden

    [4, 1, 2] → 8

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def precio_imposible(monedas):
    pass

JavaScript

function precioImposible(monedas) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.

Más retos de O(n log n)

Ver todos los retos →