문제
백준 9095번 Adding 1s, 2s, and 3s https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
코드
#include<iostream>
#include<algorithm>
using namespace std;
int n, t;
int dp[15];
int main() {
cin >> t;
dp[1] = 1; dp[2] = 2; dp[3] = 4;
for (int i = 4; i < 11; i++) dp[i] = dp[i - 3] + dp[i - 2] + dp[i - 1];
while (t--) {
cin >> n;
cout << dp[n] << '\n';
}
}
풀이방법
dp를 이용해서 1~10의 수를 1,2,3의 합으로 나타내는 방법의 수를 저장한다. 숫자 n을 1,2,3의 합으로 나타내는 방법의 수는 n-1, n-2, n-3을 나타내는 방법의 수의 합과 같다.(각각 1,2,3 더하면 n을 만들 수 있음)
고민과정
X
'algorithm > Dynamic Programming' 카테고리의 다른 글
[C++] BOJ 2579 계단 오르기 (0) | 2023.01.16 |
---|---|
[C++] BOJ 1932 삼각형 (0) | 2021.08.07 |
[C++] BOJ 11048 이동하기 (0) | 2021.08.07 |
[C++] BOJ 1010 다리 놓기 (0) | 2021.05.01 |
[C++] BOJ 13301 타일 장식물 (0) | 2021.05.01 |