백준 문제풀이/Nodejs

[백준][dp] 1309 동물원 NodeJs 구현

꽁이꽁설꽁돌 2024. 11. 16. 16:32
728x90
반응형

목차

    https://www.acmicpc.net/problem/1309

    문제

    문제 구현 방향

    ox -> 0

    xo -> 1

    xx -> 2

    라고 하면 0일때는 다음에 1 2, 1일때는 다음에 0, 2 2일때는 다음에 0, 1, 2 가 올 수 있다.

    따라서 다음과 같이 점화식이 세워진다.

     

      let a = (dp[1] + dp[2]) % md;
      let b = (dp[0] + dp[2]) % md;
      let c = (dp[1] + dp[2] + dp[0]) % md;

     

    문제 구현 시 주의점

    이 문제는 그 전 것만 누적하면 되기때문에 배열에 모든 과정의 값들을 저장할 필요가 없다.

     

     

    코드 구현

    const input = require("fs")
      .readFileSync("./dev/stdin", "utf-8")
      .trim()
      .split("\n");
    
    let N = +input[0];
    let md = 9901;
    let dp = [1, 1, 1];
    
    for (let i = 2; i <= N; i++) {
      let a = (dp[1] + dp[2]) % md;
      let b = (dp[0] + dp[2]) % md;
      let c = (dp[1] + dp[2] + dp[0]) % md;
      dp = [a, b, c];
    }
    let ans = dp.reduce((cur, el) => cur + el, 0);
    console.log(ans%9901);
    반응형