문제
Code
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class P9461 {
// 수열 --> dp[N] == p(N)
private static Long[] dp = new Long[101];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// initial values
dp[0] = 0L;
dp[1] = 1L;
dp[2] = 1L;
dp[3] = 1L;
// 테스트 케이스 개수
int T = Integer.parseInt(br.readLine());
// 테스트 케이스
while(T-- > 0) {
sb.append(padovan(Integer.parseInt(br.readLine())))
.append('\n');
}
System.out.println(sb.toString());
}
/*
수열 N번째 항 P(N) 구하기 (재귀, DP)
*/
private static Long padovan(int N) {
if(dp[N] == null) {
dp[N] = padovan(N - 2) + padovan(N - 3);
}
return dp[N];
}
}
참고 : https://st-lab.tistory.com/127