Skip to content

Latest commit

 

History

History
79 lines (57 loc) · 1.64 KB

05.md

File metadata and controls

79 lines (57 loc) · 1.64 KB

⬅️ Regresar

Reto #5: 👞 Emparejando botas

Instrucciones

Los elfos 🧝🧝‍♂️ de Santa Claus han encontrado un montón de botas mágicas desordenadas en el taller. Cada bota se describe por dos valores:

  • type indica si es una bota izquierda (I) o derecha (R).
  • size indica el tamaño de la bota.

Tu tarea es ayudar a los elfos a emparejar todas las botas del mismo tamaño que tengan izquierda y derecha. Para ello, debes devolver una lista con los pares disponibles después de emparejar las botas.

¡Ten en cuenta que puedes tener más de una zapatilla emparejada del mismo tamaño!

const shoes = [
  { type: 'I', size: 38 },
  { type: 'R', size: 38 },
  { type: 'R', size: 42 },
  { type: 'I', size: 41 },
  { type: 'I', size: 42 }
]

organizeShoes(shoes)
// [38, 42]

const shoes2 = [
  { type: 'I', size: 38 },
  { type: 'R', size: 38 },
  { type: 'I', size: 38 },
  { type: 'I', size: 38 },
  { type: 'R', size: 38 }
]
// [38, 38]

const shoes3 = [
  { type: 'I', size: 38 },
  { type: 'R', size: 36 },
  { type: 'R', size: 42 },
  { type: 'I', size: 41 },
  { type: 'I', size: 43 }
]

organizeShoes(shoes3)
// []

Solución

function organizeShoes(shoes) {
	const counts = {};

	for (const { type, size } of shoes) {
		counts[size] = counts[size] || { I: 0, R: 0 };
		counts[size][type]++;
	}

	return Object.entries(counts)
		.flatMap(([size, { I, R }]) => Array(Math.min(I, R)).fill(+size));
}

Puntaje: 🌟🌟🌟🌟🌟

1543 ops/s

Complejidad cognitiva: 4


⬅️ Regresar