dp를 활용한 문제이다. 처음에는 마지막 계단을 반드시 밟아야 한다기에 거꾸로 밟아내려오도록 풀이를 시도하였으나, 가독성이 떨어져 (n-1, n-2, n-3 같은 것들로 채워진...) 정신이 아득해졌기 때문에 Math.max를 이용하여 dp Array 초기 세팅을 하도록 하였다.
const input = require("fs")
.readFileSync(__dirname + "/input.txt")
.toString()
.trim()
.split("\n")
.map((x) => +x);
let n = input.shift();
let dp = Array(n).fill(0);
dp[0] = input[0];
dp[1] = Math.max(input[0] + input[1], input[1]);
dp[2] = Math.max(input[0] + input[2], input[1] + input[2]);
for (let i = 3; i < n; i += 1) {
dp[i] = Math.max(dp[i - 2] + input[i], dp[i - 3] + input[i - 1] + input[i]);
}
console.log(dp[n - 1]);