728x90
반응형
https://www.acmicpc.net/problem/9461
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import java.util.Scanner;
public class Main {
public static int n;
public static long[] arr;
public static long[] dp;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
arr = new long[n];
for (int i = 0; i < n; i++) {
int num = sc.nextInt();
dp = new long[num + 3];
dp[1] = 1;
dp[2] = 1;
dp[3] = 1;
for (int j = 4; j <= num; j++) {
dp[j] = dp[j - 3] + dp[j - 2];
}
arr[i] = dp[num];
}
for (long s : arr) {
System.out.println(s);
}
}
}
|
cs |
dp문제 중 두번째로 혼자힘으로 풀어본 문제였다. 그만큼 쉽다.
점화식 dp[j] = dp[j - 3] + dp[j - 2] <- 이것만 알아내면 끝난다!
주의할 점이 있다면 dp의 경우 int범위를 초과하므로 long으로 자료형을 선언해줘야한다!
728x90
반응형
'알고리즘 > DP' 카테고리의 다른 글
[java 백준] 골드 5/ 2225번 합분해 (1) | 2021.08.15 |
---|---|
[java 백준] 골드 3/ 11054번 가장 긴 바이토닉 수열 (0) | 2021.08.15 |
[java 백준] 실버 1/ 11052번 카드 구매하기 (0) | 2021.08.10 |
[java 백준] 실버 3/1699번 제곱수의 합 (0) | 2021.08.07 |
[DP기초] 필요한 동전의 최소개수 구하기 (0) | 2021.08.06 |
댓글