• dmchoi
  • [백준]9095번 - 1,2,3 더하기

    2022년 02월 28일

    문제 링크  

    [해결 코드]

    const fs = require("fs");
    let input = fs.readFileSync("/dev/stdin").toString().split("\n");
    
    
    const [numOfTestCase, ...arr] = input.map((v) => +v);
    const DP = new Array(11).fill(0);
    
    DP[1] = 1;
    DP[2] = 2;
    DP[3] = 4;
    
    for (let i = 4; i < 11; i++) {
      for (let j = 1; j <= 3; j++) {
        DP[i] += DP[i - j];
      }
    }
    for (let i = 0; i < numOfTestCase; i++) {
      console.log(DP[arr[i]]);
    }

    [풀이]

    풀이


    처음에 어떻게 접근해야할지 고민하다가 문제에 주어진 예시를 직접 적어 보았더니 규칙을 쉽게 찾을 수 있었다. 다음과 같은 점화식을 구할 수 있다.

    DP[N] = DP[N-1] + DP[N-2] + DP[N-3]

    DP를 1,2,3의 합으로 나타내는 경우의 수를 담는 배열이라고 정의하고 위의 그림을 코드로 구현했더니 쉽게 해결할 수 있었다.

    Tags
      © 2021 dmchoi, Powered By Gatsby.