Algorithm

백준 9461번 파도반수열

2nyong 2023. 3. 16. 19:14

규칙에 따라 나선 모양으로 놓여진 정삼각형들 중 N번째 놓여진 정삼각형의 한 변의 길이를 구하는 문제다.

 

N번째 정삼각형의 한 변의 길이를 나열한다면 규칙을 쉽게 찾을 수 있다.

  • P(1) = 1
  • P(2) = 1
  • P(3) = 1
  • P(4) = 2 = P(2) + P(1)
  • P(5) = 2 = P(3) + P(2)
  • P(6) = 3 = P(4) + P(3)
  • P(7) = 4 = P(5) + P(4)
  • P(8) = 5 = P(6) + P(5)
  • P(9) = 7 = P(7) + P(6)
  • P(10) = 9 = P(8) + P(7)
  • ...
  • P(N) = P(N-2) + P(N-3)
import java.util.Scanner;

public class Main {

    static long dp = new long[101];

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        dp[1] = dp[2] = dp[3] = 1L;

        int T = in.nextInt();
        for (int tc = 0; tc < T; tc++) {
            int N = in.nextInt();
            System.out.println(padovan(N));
        }
    }

    public static long padovan(int n) {
        if (dp[n] != 0) {
            return dp[n];
        }

        return dp[n] = padovan(n - 2) + padovan(n - 3);
    }
}