[boj] 2156. 포도주 시식 (node.js)

호이·2022년 3월 23일
0

algorithm

목록 보기
46/77
post-thumbnail

문제 요약

[boj] 2156. 포도주 시식 (node.js)

  • 점화식은 아래와 같다.
    • i번째 포도주를 마시지 않는 경우의 최댓값 dp[i][0] = Math.max(OX, XX)
      • dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1]);
    • i번쨰 포도주를 마시는 경우의 최댓값 dp[i][1] = Math.max( XOO, XO )
      • dp[i][1] = arr[i] + Math.max(dp[i - 2][0] + arr[i - 1], dp[i - 1][0]);

풀이

내 풀이

const readline = require("readline");
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

const solution = () => {
  const n = input();
  let arr = [];
  let dp = [];
  for (let i = 0; i < n; i++) {
    dp[i] = [0, 0];
    arr.push(Number(input()));
  }
  dp[0] = [0, arr[0]];
  dp[1] = [arr[0], arr[0] + arr[1]];
  for (let i = 2; i < n; i++) {
    dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1]);
    dp[i][1] = arr[i] + Math.max(dp[i - 2][0] + arr[i - 1], dp[i - 1][0]);
  }
  console.log(Math.max(...dp[n - 1]));
};

let line = 0;
const input = () => stdin[line++];

let stdin = [];
rl.on("line", function (line) {
  stdin.push(line);
}).on("close", function () {
  solution();
  process.exit();
});
profile
매일 부활하는 개복치

0개의 댓글