const solution = (budget, arr) => {
arr.sort((a, b) => (a[0] + a[1] > b[0] + b[1] ? 1 : -1));
const limit = arr.length;
const calculate = (remain, index) => {
let count = 1;
for (let i = 0; i < limit; i++) {
const [price, deliveryCharge] = arr[i];
if (i == index) continue;
if (remain >= price + deliveryCharge) {
remain = remain - price - deliveryCharge;
count++;
continue;
}
return count;
}
};
let max = 0;
for (let i = 0; i < limit; i++) {
const [price, deliveryCharge] = arr[i];
const remain = budget - price / 2 - deliveryCharge;
const calculated = calculate(remain, i);
if (calculated > max) max = calculated;
}
return max;
};
const result = solution(28, [
[6, 6],
[2, 2],
[4, 3],
[4, 5],
[10, 3],
]);
console.log(result);