티스토리 뷰

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

 

15990번: 1, 2, 3 더하기 5

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다.

www.acmicpc.net

const fs = require('fs');
const input = fs.readFileSync("./dev/stdin").toString().trim().split('\n').map(Number);
const N = input.shift();
const mod = 1000000009;
const answer = [];
const MAX = Math.max(...input)


  let dp = Array.from(Array(MAX+1),()=>[0])
  dp[0] = [0]
  dp[1] = [0,1,0,0]
  dp[2] = [0,0,1,0]
  dp[3] = [0,1,1,1]
  
  for(let i = 4; i<=MAX; i++){
    dp[i][1] = (dp[i-1][2] + dp[i-1][3])%mod;
    dp[i][2] = (dp[i-2][1] + dp[i-2][3])%mod;
    dp[i][3] = (dp[i-3][1] + dp[i-3][2])%mod;
  }

  for(let t = 0; t<N; t++){
    answer.push(dp[input[t]].reduce((r,v)=>{return (r+v)% mod},0));
  }

console.log(answer.join('\n'))
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함