본문 바로가기
알고리즘/DP

[java 백준] 실버 3/9461번 파도반 수열

by Meaning_ 2021. 8. 10.
728x90
반응형

https://www.acmicpc.net/problem/9461

 

9461번: 파도반 수열

오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의

www.acmicpc.net

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
반응형

댓글