본문 바로가기
백준 문제풀이/Nodejs

[백준][dp] 11052 카드 구매하기 NodeJs구현

by 꽁이꽁설꽁돌 2024. 10. 23.
728x90
반응형

목차

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

    문제

     

    문제 구현 방향

    카드팩을 순서대로 순회하면서 그 전 카드팩의 최대의 조합을 비교하며 최댓값을 갱신해 주면된다.

     

     

     

    코드 구현

    const input = require("fs")
      .readFileSync("./dev/stdin", "utf-8")
      .trim()
      .split("\n");
    
    let N = Number(input[0]);
    let arr = input[1].trim().split(" ").map(Number);
    
    let dp = new Array(1002).fill(0);
    
    dp[1] = arr[0];
    
    for (let i = 2; i <= N; i++) {
      let m = 0;
      for (let j = 1; j <= i; j++) {
        let a = j;
        let b = i - j;
        let sum = dp[a] + dp[b];
        m = Math.max(sum, m);
        if (a === b) break;
      }
      dp[i] = Math.max(m, arr[i - 1]);
    }
    
    console.log(dp[N]);

     

    반응형