규칙에 따라 나선 모양으로 놓여진 정삼각형들 중 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);
}
}
'Algorithm' 카테고리의 다른 글
백준 1932번 정수 삼각형 (0) | 2023.03.16 |
---|---|
백준 1149번 RGB거리 (0) | 2023.03.16 |
백준 9184번 신나는 함수 실행 (0) | 2023.03.15 |
백준 11053번 가장 긴 증가하는 부분 수열 (0) | 2023.03.15 |
백준 2579번 계단 오르기 (0) | 2023.03.14 |
댓글