[백준] 9461 - 파도반수열 [JAVA]

 

 

 

코드

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

public class Main {
    static long[] dp = new long[101];

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int T = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < T; i++) {
            int N = Integer.parseInt(br.readLine());

            sb.append(solution(N) + "\n");
        }

        System.out.println(sb);
    }
    // Top-down
    static long solution(int n) {

        dp[1] = 1;
        dp[2] = 1;
        dp[3] = 1;
        // 피보나치 수열 형태를 따름
        for (int i = 4; i <= n; i++) {
            if (dp[i] == 0) dp[i] = dp[i - 3] + dp[i - 2];
        }
        return dp[n];
    }

}