https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
이 문제는 DP를 통해 해결할 수 있다.
문제의 조건은 아래와 같이 변한다.
1 | 2 | 3 | 4 | 5 | 6 | 7 |
1 | 2 | 4 | 7 | 13 | 24 | 44 |
위 표를 통해 점화식을 세워보면
if N > 3
dp[N] = dp[N-1] + dp[N-2] + dp[N-3]이 성립한다.
#include <iostream>
using namespace std;
int N;
int dp[11];
int main() {
int T;
cin >> T;
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for (int j = 4; j < 11; j++) {
dp[j] = dp[j - 1] + dp[j - 2] + dp[j - 3];
}
for (int i = 0; i < T; i++) {
cin >> N;
cout << dp[N] << '\n';
}
}
'Baekjoon Review' 카테고리의 다른 글
[Silver 3] 9461번 파도반 수열 (0) | 2023.11.14 |
---|---|
[Silver 2] 1912번 연속합 (0) | 2023.11.14 |
[Gold 5] 12865번 평범한 배낭 (0) | 2023.11.13 |
[Silver 2] 11053번 가장 긴 증가하는 부분 수열 (0) | 2023.11.12 |
[Silver 4] 1158번 요세푸스 문제 (0) | 2023.11.12 |