๐ŸŽฒ ๋ฐฑ์ค€ 2011๋ฒˆ ์•”ํ˜ธ์ฝ”๋“œ

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

๋ฐฑ์ค€

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

๋ฐฑ์ค€ 2011๋ฒˆ

๐Ÿงธ ์•”ํ˜ธ๋ฅผ ํ•ด์„ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์—์„œ ํ—ค๋งธ๋‹ค.

์ฝ”๋“œ

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

const dp = new Array(input.length + 1);
dp[0] = 1;
//0์œผ๋กœ ์‹œ์ž‘ํ•  ๊ฒฝ์šฐ
if (Number(input[0]) <= 0) {
  return console.log(0);
}
dp[1] = 1;

for (let i = 2; i <= input.length; i++) {
  const two = Number(input[i - 2] + input[i - 1]);
  const one = Number(input[i - 1]);
  //์•”ํ˜ธ๊ฐ€ ์ž˜๋ชป๋œ ๊ฒฝ์šฐ ๋ฏธ๋ฆฌ ์ฒ˜๋ฆฌ
  if (one === 0 && (two > 26 || input[i - 2] === "0")) {
    return console.log(0);
  }
  
  if (two <= 26 && two >= 10) {
    if (one === 0) {
      dp[i] = dp[i - 2];
    } else {
      dp[i] = (dp[i - 1] + dp[i - 2]) % 1000000;
    }
  } else {
    dp[i] = dp[i - 1];
  }
}

console.log(dp[input.length] % 1000000);

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