본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 9095/javascript] 1, 2, 3 더하기

by tokkiC 2022. 9. 27.

다이나믹 프로그래밍을 사용하는 문제

1,2,3까지는 직접 경우의 수를 구해보자

4부터는 각각 한단계 전인 3, 2, 1 일때의 경우의 수의 합과 같다.(1,2,3 을 더해주므로)

bottom up 방식으로 구현을 위해 배열을 만들고 배열의 인덱스에  각각의 수를 올려가면서 저장해준다

인덱스로 필요한 수들만 꺼내서 계산하면 완성이다

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

 

9095번: 1, 2, 3 더하기

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

www.acmicpc.net

let input = [];

const readline = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});

readline.on("line", (line) => {
  input.push(line);
});

readline.on("close", () => {
  solution(input);
  process.exit();
});

const solution = (inp) => {
  inp.shift();
  let arr = Array(14).fill(0);
  arr[1] = 1;
  arr[2] = 2;
  arr[3] = 4;
  let ans = [];

  for (el of inp) {
    let n = Number(el);
    for (let i = 4; i < 14; i++) {
      arr[i] = arr[i - 1] + arr[i - 2] + arr[i - 3];
    }
    ans.push(arr[n]);
  }
  console.log(ans.join("\n"));
};

댓글