El precio que no puedes pagar
- O(n log n) · Difícil
- Plan completo
- Python
- JavaScript
- ordenar
- ciclos
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):
passJavaScript
function precioImposible(monedas) {
}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.