인프런 커뮤니티 질문&답변
이렇게 풀어봤는데 괜찮을까요?
작성
·
178
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
hollis9797
질문자
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]]));