반응형
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. 참고
질문, 고칠점 등 댓글 언제나 환영입니다.
반응형
'백준 > 일반 문제' 카테고리의 다른 글
[백준/BOJ] 2579 - 계단 오르기 (c++) (DP) (0) | 2022.04.10 |
---|---|
[백준/BOJ] 1932 - 정수 삼각형 (c++) (DP) (0) | 2022.04.10 |
[백준/BOJ] 2156 - 포도주 시식 (c++) (DP) (0) | 2022.04.10 |
[백준/BOJ] 10844 - 쉬운 계단 수 (c++) (DP) (2) | 2022.04.09 |
[백준/BOJ] 1463 - 1로 만들기 (c++) (DP) (0) | 2022.04.09 |