백준/일반 문제
[백준/BOJ] 9461 - 파도반 수열 (c++) (DP)
sem;
2022. 4. 10. 12:06
반응형
1. 문제
https://www.acmicpc.net/problem/9461
2. 풀이
문제에서
P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9
이라고 하였다.
위의 수열을 보면 P(i) = P(i-2) + P(i-3)이라는 것을 알 수 있다.
이를 통해 코딩을 하면된다.
3. 소스코드
#include <iostream>
using namespace std;
int t, n, mxn = 3;
long long dp[101];
int main() {
ios::sync_with_stdio(0);
cin.tie(), cout.tie();
dp[1] = dp[2] = dp[3] = 1;
cin >> t;
while (t--) {
cin >> n;
if (mxn < n) {
for (int i = mxn + 1; i <= n; i++) dp[i] = dp[i - 2] + dp[i - 3];
mxn = n;
}
cout << dp[n] << '\n';
}
}
4. 참고
질문, 고칠점 등 댓글 언제나 환영입니다.
반응형