문제는 되게 쉽다 그러나 연산시 int형이아닌 long형을 써야한다.
또, 배열[] 안의 숫자는 int형만되는것도 참고.
import java.util.Scanner;
public class Main {
private static long dp_koong[] = new long[68];
private static long input[];
public static void main(String[] args) {
//초깃값할당
dp_koong[0] = 1;
dp_koong[1] = 1;
dp_koong[2] = 2;
dp_koong[3] = 4;
Scanner scanner = new Scanner(System.in);
int test_count = scanner.nextInt();
input = new long[test_count]; //테스트케이스 갯수만큼 할당
//input배열에 받은 케이스별로 저장
for(int i = 0 ; i < test_count ; i ++)
input[i] = scanner.nextLong();
//출력
for (int i = 0; i < test_count; i++) {
System.out.println(koong(input[i]));
}
}
private static long koong(long number) {
//초깃값만큼 리턴
if(0 <= number && number <= 3)
return dp_koong[(int) number];
//이미 존재하면
if(dp_koong[(int) number] != 0)
return dp_koong[(int) number];
for(int i = 4 ; i <= number ; i ++) {
dp_koong[i] = dp_koong[i -1] + dp_koong[i -2] + dp_koong[i -3] + dp_koong[i -4];
}
return dp_koong[(int) number];
}
}
처음부터 스캐너클래스로 nextInt로 받았으면 [] 블럭에서 int형으로 캐스트 안했어도 되겠다