D[i] = i를 1,2,3의 합으로 나타내는 방법의 수
D[i] = D[i-1] + D[i-2] + D[i-3]
i번째의 값을 구하기 위해 i-1, i-2, i-3의 각각 1,2,3를 더하여 i값을 만들어낸다.
n <= 10 이기 때문에
총 경우의 수는 3^n이다.
go(count, sum, goal)
부르트포스로 문제를 풀기 위해서 3가지 경우를 고려해야함
1. 불가능한 경우 (sum > goal)
public class Num9095 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] d = new int[11];
d[0] = 1;
for (int i=1; i<=10; i++) {
for (int j=1; j<=3; j++) {
if (i-j >= 0) {
d[i] += d[i-j];
}
}
}
int t = sc.nextInt();
while (t-- > 0) {
int n = sc.nextInt();
System.out.println(d[n]);
}
}
import java.util.*;
public class Main {
public static int go(int sum, int goal) {
if (sum > goal) {
return 0;
}
if (sum == goal) {
return 1;
}
int now = 0;
for (int i=1; i<=3; i++) {
now += go(sum+i, goal);
}
return now;
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while (t-- > 0) {
int n = sc.nextInt();
System.out.println(go(0, n));
}
}
}
참고 :
출처 : https://www.acmicpc.net/problem/9095