눈송이의 개발생활
[BOJ]9095 - 1,2,3 더하기 (C++) 본문
문제
https://www.acmicpc.net/problem/9095
코드
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int dp[10001];
int main(){
cin.tie(0); cout.tie(0);
ios_base::sync_with_stdio(false);
int tc, n;
dp[1]= 1; dp[2]=2; dp[3]=4;
cin >> tc;
for(int i=0; i<tc; i++){
cin >> n;
for (int i=4; i<n+1; i++){
dp[i] = dp[i-1]+ dp[i-2]+dp[i-3];
}
cout << dp[n] << "\n";
}
}
풀이
다이나믹 프로그래밍을 하는 문제
1,2,3으로 만들어진 숫자를 생각하는 문제이기 때문에 구해야 하는 숫자-1, -2, -3을 보면 해결할 수 있다.
예를 들어 9를 1,2,3의 합으로 나타내기 위해서는 9보다 1,2,3 작은 수에 각각 1,2,3을 더하면 되기 때문에 이전에 구했던 6,7,8의 계산 결과를 이용하면 된다.
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ]11048 - 이동하기 (C++) (0) | 2022.01.05 |
---|---|
[BOJ]11762 - 2×n 타일링 (C++) (0) | 2022.01.05 |
[BOJ]2346 - 풍선 터뜨리기 (C++) (0) | 2022.01.05 |
[BOJ]3078 - 좋은 친구 (C++) (0) | 2022.01.04 |
[BOJ]10799 - 쇠막대기 (C++) (0) | 2022.01.04 |
Comments