#문제
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
#풀이 & 학습한 내용
마지막에 올 수 있는 수는 1,2,3 중 하나이다. 그리고 마지막 수를 빼면 같은 문제로 문제의 크기만 n-1, n-2, n-3이 되므로 dp를 이용한다. 이때 dp배열의 초깃값으로 dp[1]=1, dp[2]=2, dp[3]=4를 넣어주고 반복문으로 dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]을 통해 dp[10]까지 계산한다.
#소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include<iostream>
#include<algorithm>
using namespace std;
int dp[12];
int main(void) {
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for (int i = 4; i <= 10; i++) {
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
}
int T = 0;
int n = 0;
cin >> T;
while (T--) {
cin >> n;
cout << dp[n] << '\n';
}
}
|
cs |
github.com/HoYoungChun/BOJ_algorithm/blob/master/Dynamic_Programming/BOJ_9095.cpp
HoYoungChun/BOJ_algorithm
Baekjoon Online Judge problem solving by C++. Contribute to HoYoungChun/BOJ_algorithm development by creating an account on GitHub.
github.com
'Algorithm > Dynamic Programming' 카테고리의 다른 글
[C++] 백준 11052번 : 카드 구매하기 (S1) & 16194번 : 카드 구매하기 2 (S1) (0) | 2020.11.06 |
---|---|
[C++] 백준 15988번 : 1, 2, 3 더하기 3 (S2) (0) | 2020.11.05 |
[C++] 백준 11727번 : 2×n 타일링 2(S3) (0) | 2020.11.05 |
[C++] 백준 11726번 : 2×n 타일링 (S3) (0) | 2020.11.05 |
[C++] 백준 1463번 : 1로 만들기 (S3) (0) | 2020.11.05 |