๋ฐฑ์ค 1932๋ฒ
์ฝ๋
๐งธ ๋๋์ด ๋ด ํ์ผ๋ก ํด๊ฒฐ๋ฐฉ๋ฒ์ ์์๋๋ค
๐ dp 2์ฐจ์๋ฐฐ์ด์ ์์ฑํ ๋ fill์ ์ฌ์ฉํด์ฃผ์๋๋ฐ ์ฌ๊ธฐ์ 1์ฐจ ํค๋งธ๋ค. ๋น ๋ฐฐ์ด์ด ๋ค์ด๊ฐ ๋ ๊ฐ์ ์ฃผ์๊ฐ์ ๋์ด ๋ชจ๋ ํ์ ๊ฐ์ ๊ฐ์ด ๋ค์ด๊ฐ๋ค. fill์ฌ์ฉ์ ์ฃผ์ํด์ผ๊ฒ ๋ค.
๐ ๋๋ฒ์งธ๋ก N์ด 1์ผ๋๋ฅผ ์๊ฐํ์ง์์ dp[1]์ผ๋๋ฅผ ๋ฐ๋ณต๋ฌธ ๋ฐ์์ ๊ฐ์ ๋ฃ์ด ํค๋งธ๋ค. ์ ๋ ฅ๊ฐ์ ๋ฒ์๋ฅผ ์๊ฐํ์.
const fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const N = Number(input.shift());
input = input.map((item) => item.split(" ").map(Number));
let dp = Array.from(new Array(N), () => []);
dp[0][0] = input[0][0];
for (let i = 1; i < N; i++) {
for (let j = 0; j < input[i].length; j++) {
if (j === 0) {
dp[i][j] = dp[i - 1][j] + input[i][j];
} else if (j === input[i].length - 1) {
dp[i][j] = dp[i - 1][j - 1] + input[i][j];
} else {
dp[i][j] = Math.max(
dp[i - 1][j - 1] + input[i][j],
dp[i - 1][j] + input[i][j]
);
}
}
}
console.log(Math.max(...dp[N - 1]));