Algorithm, boj, 1,2,3더하기(9095)
풀이
- 1,2,3의 합으로 나타낼수 있고 숫자 하나이상 사용해야 한다
- 4 = 1+3, 2+3, 3+1, 4+0 (x)
- 이므로 dp[3] + dp[3] + dp[1]
- 5 = 1+4, 2+3, 3+2, 4+1, 5(x)
- 이므로 4를 나타낼수 있는 방법은 dp[4], 3을 나타낼수 있는 방법 dp[3]….. 따라서 dp[5] = dp[4]+dp[3]+dp[2]
- 이와 같은 규칙으로 점화식 도출이 가능하다.
package org.baekjoon;
import java.util.Scanner;
public class test9095 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int testCase = sc.nextInt();
int[] answer = new int[testCase];
int[] dp = new int[12];
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
int idx=0;
while (testCase != 0) {
int num = sc.nextInt();
for (int i = 4; i <= num; i++)
dp[i] = dp[i-1]+dp[i-2]+dp[i-3];
answer[idx++] = dp[num];
--testCase;
}
for(int e:answer)
System.out.println(e);
}
}
Reference