위 문제는 수의 나열인 만큼 해당 조건에 맞는 점화식을 작성할 수 있는지를 물어보는 것 같다.
1,2,3의 합으로만 주어진 1이상 10이하의 n을 나타낼 수 있도록 구현해야 한다.
규칙을 찾아보면,
위처럼, 1, 2, 3으로 더해야 한다는 조건을 뺀 수의 더하기 횟수의 합들과 같게 된다.
위와 같은 규칙에 따라 점화식을 세우면 아래와 같다
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
int[] dp = new int[11];
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for(int i = 4; i < 11; i++){
dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
}
while(T-- > 0){
int n = Integer.parseInt(br.readLine());
sb.append(dp[n]).append("\n");
}
br.close();
System.out.println(sb);
}
}