[백준 2156] 다이나믹 프로그래밍 - 포도주 시식

김민지·2023년 3월 28일
0

냅다 시작 백준

목록 보기
37/118

✨ 문제 ✨

✨ 정답 ✨

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");

// const fs = require('fs'); 
// let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

let N = +input[0]

input[1].split(' ');
input = input.map((el) => +el)
input.shift();
let dp = new Array(N).fill(0)

if (N === 1) console.log(input[0])
else if (N === 2) console.log(input[0] + input[1])
else if (N >= 3) {
    dp[1] = input[0]
    dp[2] = input[0] + input[1];
    for (let i = 3; i <= N; i++) {
        dp[i] = Math.max(dp[i - 3] + input[i - 2] + input[i - 1], dp[i - 2] + input[i - 1], dp[i - 1])
    }
    console.log(Math.max(...dp))
}

💡💡 기억해야 할 점 💡💡

  1. 배열의 시작이 [0]이 아닌 경우도 있다.
profile
이건 대체 어떻게 만든 거지?

0개의 댓글