๐ŸŽฒ ๋ฐฑ์ค€ 15486๋ฒˆ ํ‡ด์‚ฌ2

Jeongeunยท2023๋…„ 8์›” 16์ผ
0

๋ฐฑ์ค€

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

๋ฐฑ์ค€ 15486๋ฒˆ

๐Ÿงธ ์ „์— "ํ‡ด์‚ฌ" ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋Š”๋ฐ ์Šค์Šค๋กœ ๋ชปํ’€์—ˆ์–ด์„œ ํ‡ด์‚ฌ2์— ๋„์ „ํ•ด๋ดค๋‹ค.
๐Ÿงธ ๋‚ด๊ฐ€ ์Šค์Šค๋กœ ์“ด ์ฝ”๋“œ๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. "ํ‡ด์‚ฌ"์™€ "ํ‡ด์‚ฌ2"์˜ ์ฐจ์ด๋Š” N์˜ ๋ฒ”์œ„์˜€๋‹ค. ๋‚ด ์ฝ”๋“œ๋Š” "ํ‡ด์‚ฌ"๋ฌธ์ œ๋Š” ํ’€ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ "ํ‡ด์‚ฌ2"๋Š” ํ’€์ง€๋ชปํ–ˆ๋‹ค. ์ „์— ํ˜ผ์ž ๋ชปํ’€๋˜ "ํ‡ด์‚ฌ"๋ฌธ์ œ๋ฅผ ์Šค์Šค๋กœ ํ‘ผ๊ฑด ์ข‹์•˜์ง€๋งŒ "ํ‡ด์‚ฌ2"๋Š” ํ•ด๋‚ด์ง€ ๋ชปํ•œ๊ฒƒ์ด ์•„์‰ฝ๋‹ค.
๐Ÿ’ก max๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜๋ฉด์„œ ํ’€๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ํ•œ ๋ฒˆ ๋” ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ํ’€ ์ˆ˜ ์žˆ๋‹ค.
๐Ÿงธ ๋”ฐ๋กœ ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค๋Š” ์ƒ๊ฐ์€ ํ–ˆ๋Š”๋ฐ ๋‚ด ๋จธ๋ฆฟ์†์—์„œ๋Š” ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ..?๋กœ ๋๋‚ฌ๋‹ค. ์กฐ๊ธˆ ๋” ์ฐจ๋ถ„ํžˆ, ์นจ์ฐฉํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ์œผ๋ฉด ํ’€ ์ˆ˜ ์žˆ์ง€ ์•Š์•˜์„๊นŒ ์ƒ๊ฐํ•œ๋‹ค.

์ •๋‹ต ์ฝ”๋“œ

const fs = require('fs'); 
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const N = +input.shift();
const dp = new Array(N + 1).fill(0);
const schedule = input.map((item) => item.split(" ").map(Number));

let max = 0;
for (let i = 0; i < N; i++) {
  const [day, cost] = schedule[i];
  max = Math.max(dp[i], max);
  if (i + day <= N) dp[i + day] = Math.max(dp[i + day], max + cost);
}

console.log(Math.max(...dp));

์‹œ๊ฐ„์ดˆ๊ณผ ์ฝ”๋“œ

const fs = require('fs'); 
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const N = +input.shift();
const dp = new Array(N).fill(0);
const schedule = input.map((item) => item.split(" ").map(Number));

for (let i = 0; i < N; i++) {
  const [day, cost] = schedule[i];
  if (i + day - 1 < N) {
    dp[i] += cost;
    if (i + day < N) {
      for (let j = i + day; j < N; j++) {
        dp[j] = Math.max(dp[i], dp[j]);
      }
    }
  }
}

console.log(Math.max(...dp));

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