๐ŸŽฒ ๋ฐฑ์ค€ 11048๋ฒˆ ์ด๋™ํ•˜๊ธฐ

Jeongeunยท2023๋…„ 7์›” 14์ผ
0

๋ฐฑ์ค€

๋ชฉ๋ก ๋ณด๊ธฐ
94/187

๋ฐฑ์ค€ 11048๋ฒˆ

๐Ÿ’ก ํฌ๊ธฐ๊ฐ€ Y+1,X+1์ธ dp๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  dp[1][1]๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ํ˜„์œ„์น˜๊นŒ์ง€์˜ ์‚ฌํƒ• ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•ด์ค€๋‹ค.
๐Ÿ’ก dp[i][j]์˜ ์ด์ „ ์œ„์น˜๋Š” dp[i-1][j],dp[i][j-1],dp[i-1][j-1]์ด๋‹ค. ์ด ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ๊ณ ๋ฅด๊ณ  ํ˜„์œ„์น˜์˜ ์‚ฌํƒ• ๊ฐœ์ˆ˜(input[i-1][j-1])๋ฅผ ๋”ํ•ด์ฃผ๋ฉด dp[i][j]์˜ ๊ฐ’์ด ๋œ๋‹ค.
๐Ÿ’ก dpํฌ๊ธฐ๋ฅผ Y+1, X+1๋กœ ํ•ด์ค€ ์ด์œ ๋Š” 0์œผ๋กœ ์ฑ„์›Œ ๋ฏธ๋กœ๋ฅผ ๋ฒ—์–ด๋‚ฌ์„ ๊ฒฝ์šฐ๋ฅผ ์‰ฝ๊ฒŒํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

์ฝ”๋“œ

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

const [Y, X] = input.shift().split(" ").map(Number);
input = input.map((item) => item.split(" ").map(Number));

const dp = Array.from(new Array(Y + 1), () => new Array(X + 1).fill(0));

for (let i = 1; i < Y+1; i++) {
  for (let j = 1; j < X+1; j++) {
    dp[i][j] =
      Math.max(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + input[i-1][j-1];

  }
}

console.log(dp[Y][X]);

0๊ฐœ์˜ ๋Œ“๊ธ€