- 코드 설명

 - 입력이 양수이며 11보다 작다고해서 하나하나 쓰다가 규칙을 찾게 되었다.

 - 규칙은 배열에 dp[0]=1, dp[1]=1, dp[2]=2를 넣은다음 dp[i] = dp[i-3] + dp[i-2] + dp[i-1]로 각 배열마다 값을 넣어주면 1,2,3의 합으로 표현할 수 있는 수가 나오는 것을 발견하였다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
	static int N,num;
	static int[] dp;

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		N = Integer.parseInt(br.readLine());
		
		dp = new int[11];
		
		dp[0] = 1;
		dp[1] = 1;
		dp[2] = 2;
		
		for (int i = 3; i<11;i++) {
			dp[i] = dp[i-3] + dp[i-2] + dp[i-1];
		}
		
		for (int i = 0; i < N; i++) {
			num = Integer.parseInt(br.readLine());
			System.out.println(dp[num]);
		}
		
	}
}

 

 

+ Recent posts