백준 GOLD 4(작업) - #2056

image

  • 사용 언어 : javascript

  • 해결 날짜 : 2023-02-12

  • 해결 방법 :

    • dp를 활용해 문제 해결
    • 선행 작업이 없는 경우 현재 작업의 작업 시간, 있는 경우 가장 늦게 끝나는 작업 + 현재 작업 시간으로 dp 업데이트
  • 회고 :

    • 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 = +props[0];
      const tasks = props.slice(1).map((task) => task.split(' ').map((e) => +e));
      const dp = Array.from({ length: N + 1 }, () => 0);
    
      for (let i = 0; i < N; i++) {
        dp[i + 1] = tasks[i][0];
    
        tasks[i].slice(2).forEach((e) => {
          dp[i + 1] = Math.max(dp[i + 1], dp[e] + tasks[i][0]);
        });
      }
    
      console.log(Math.max(...dp));
    }
    
  • 출처: 백준