본문 바로가기

알고리즘/BOJ

[C++] 백준 9461번 - 파도반 수열


0. 문제

 

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

 

1. 아이디어

 

1) 순서대로 그림을 따라서 그려보니까, P(5) 이후의 삼각형들은 모두 시계방향으로 도는 규칙을 가지고 있다. 따라서 점화식을 세웠을 때 P(N) = P(N -1) + P(N - 5) 라는 사실을 발견!

 

2. 소스코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
int main()
{
    int T;
    long long dp[101];
    std::cin >> T;
    dp[1= 1; dp[2= 1; dp[3= 1; dp[4= 2; dp[5= 2;
 
    for (int r = 0; r < T; r++)
    {
        int N;
        std::cin >> N;
        for (int i = 6; i <= N; i++)
            dp[i] = dp[i - 1+ dp[i - 5];
        std::cout << dp[N]<<'\n';
    }
}
cs

 

3. 결과

 

 

4. 피드백

 

  • 항상 오버플로우 조심 ㅜㅜ


 

'알고리즘 > BOJ' 카테고리의 다른 글

[C++] 백준 2011번 - 암호코드  (0) 2020.03.26
[C++] 백준 2225번 - 합분해  (1) 2020.03.25
[C++] 백준 1699번 - 제곱수의 합  (0) 2020.03.23
[C++] 백준 2579번 - 계단 오르기  (0) 2020.03.23
[C++] 백준 1912번 - 연속합  (0) 2020.03.23