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

JEE SUN LEE님의 프로필 이미지
JEE SUN LEE

작성한 질문수

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

4. 졸업선물

코드 확인 부탁드립니다.

작성

·

193

·

수정됨

0


      function solution(m, product) {
        let answer = 0;
        let n = product.length;
        let cnt = 0;

        product.sort((a, b) => a[0] / 2 + a[1] - (b[0] / 2 + b[1]));
        // console.log(product);
        for (let i = 0; i < n; i++) {
          m = m - (product[i][0] / 2 + product[i][1]);
          cnt++;
          //console.log("cnt", cnt);
          if (product[i][0] + product[i][1] > m) break;
          answer = cnt;
        }
        return answer;
      }

//콘솔에서는 cnt가 4로 나왔는데 답에서 3으로 출력이 됩니다. 

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

for (let i = 0; i < n; i++) {
    m = m - (product[i][0] / 2 + product[i][1]);
    cnt++;
    answer = cnt;
    //console.log("cnt", cnt);
    if (product[i][0] + product[i][1] > m) break;
    
  }

위와 같이 answr = cnt 위치를 옮기면 answer = 4가 되겠지만 이 코드는 올바른 정답코드가 아닙니다.

위에 for(let i = 0; i < n; i++) 반복문 안쪽에서 m = m - (product[i][0] / 2 + product[i]\[1]); 코드 라인을 하고 나서 for(let j = 0; j < n; j++) 반복문이 돌아야 합니다.

전체적으로 이중 for문이어야 모든 입력 케이스에서 올바른 답이 나옵니다. 영상을 다시 시청하셨으면 좋겠습니다.

 

 

JEE SUN LEE님의 프로필 이미지
JEE SUN LEE
질문자

답변 감사합니다. 다시 한번 풀어보겠습니다:)

JEE SUN LEE님의 프로필 이미지
JEE SUN LEE

작성한 질문수

질문하기