작성
·
105
0
function App() {
const solve = (m ,arr) => {
let answer = 0;
let n = arr.length;
arr.sort((a,b) => (a[0] + a[1]) - (b[0] + b[1]));
// 50% 쿠폰, 상품
for (let i = 0; i < n; i++) {
let money = m - (arr[i][0] - arr[i][1]);
let cnt = 1;
for (let j = 0; j < n; j++) {
if (j === i) {
continue;
}
money = money - (arr[j][0] + arr[j][1])
if (money > 0) {
cnt ++;
}
}
if (answer < cnt) {
answer = cnt
}
}
return answer
}
const arr = [[6,6],[2,2],[4,3],[4,5],[10,3]]
답변 1
0
j === i 를 같을 때를 그냥 continue 로 넘겨버렸습니다.
해서 뺀다음에 값이 0을 넘을때만 cnt 값을 증가시켜,
마지막 조건 에서 answer 값을 return 했습니다.
반례입니다. 답은 10입니다.
console.log(solution(596, [[57, 3], [85, 3], [61, 3], [98, 3], [85, 4], [47, 3], [42, 4], [95, 3], [85, 3], [82, 3], [41, 4], [64, 4], [36, 4], [100, 4], [66, 3]]));