인프런 커뮤니티 질문&답변

hollis9797님의 프로필 이미지
hollis9797

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

4. 졸업선물

이렇게 풀어봤는데 괜찮을까요?

작성

·

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

hollis9797님의 프로필 이미지
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]]));

 

hollis9797님의 프로필 이미지
hollis9797

작성한 질문수

질문하기