천천히 하지만 더 멀리

평범한 배낭 [백준 알고리즘 12865] 본문

CS/알고리즘

평범한 배낭 [백준 알고리즘 12865]

PJamesY 2022. 4. 12. 21:03

https://www.acmicpc.net/problem/12865

 

12865번: 평범한 배낭

첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000)

www.acmicpc.net

 

const input = ['4 7', '6 13', '4 8', '3 6', '5 12']
const [a, ...b] = input;
const [cases, weight] = a.split(' ').map(elem => Number(elem))
const weightValue = b.map(elem => elem.split(' ').map(elem => Number(elem)))

const counts = [];
for (let i = 0; i < cases+1; i++) {
  counts.push(new Array(weight+1).fill(0))
}

for (let i = 1; i < cases+1; i++) {
  const b_weight = weightValue[i-1][0];
  const b_value = weightValue[i-1][1];
  for (let j = 1; j < weight+1; j++) {
    if (j < b_weight) {
      counts[i][j] = counts[i-1][j]
    } else {
      const prev = counts[i-1][j];
      const update = counts[i-1][j-b_weight] + b_value
      counts[i][j] = Math.max(prev, update)
    }
  }
}
console.log(counts[cases][weight])

'CS > 알고리즘' 카테고리의 다른 글

퀵 정렬 ( Quick Sort )  (0) 2022.03.19
Heap tree 만들기 ( make heap )  (0) 2022.01.23
백준 2839  (0) 2022.01.15
백준 2941 [ 자바스크립트 ]  (0) 2022.01.09
Comments