백준 GOLD 5(벼락치기) - #14728
-
사용 언어 : javascript
-
해결 날짜 : 2023-02-14
-
해결 방법 :
- dp를 활용해 문제 해결
- 한 단원을 여러개 풀 수 없으므로 끝에서부터 dp 업데이트
- 업데이트 조건: dp[t], dp[t - K] + S 중 큰 값
-
회고 :
- x
-
코드
const fs = require('fs'); const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt'; const input = fs.readFileSync(filePath).toString().trim(); solution(input); function solution(props) { props = props.split('\n'); const [N, T] = props[0].split(' ').map((e) => +e); props = props.slice(1).map((prop) => prop.split(' ').map((e) => +e)); const dp = Array(T + 1).fill(0); for (let n = 1; n <= N; n++) { for (let t = T; t >= 0; t--) { const [K, S] = props[n - 1]; if (t >= K) { dp[t] = Math.max(dp[t], dp[t - K] + S); } } } console.log(dp[T]); }
-
출처: 백준