MODE::CREATIVE

[백준][c++] 9461번: 파도반 수열 본문

BOJ

[백준][c++] 9461번: 파도반 수열

LEE MINGYU 2024. 9. 14. 18:47

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

문제 해석

  • 파도반 수열의 점화식을 보고 dp(동적 프로그래밍)으로 풀기

알고리즘 분류

  • dp

풀이

  • 그림을 보면 삼각형의 변의 길이가 늘어나는 규칙을 알 수 있음
  • 이를 점화식으로 세우고 값을 한번에 계산하면 됨
  • dp[i] = dp[i - 2] + dp[i - 3];

코드

#include <iostream>
#include <string>
#include <set>
using namespace std;

long long dp[101];
void solution() {
  int n;
  cin >> n;
  for(int i = 4; i <= n; i++) {
    dp[i] = dp[i - 2] + dp[i - 3];
  }
  cout << dp[n] << endl;
}

int main() { 
  dp[1] = 1;
  dp[2] = 1;
  dp[3] = 1;
  int t;
  cin >> t;
  for (int i = 0; i < t; i++) solution();
}