이 문제는 너무 쉽다 dp이긴 한데 점화식으로 풀었다고 하기엔 애매하다 1부터 123을 다 더해서 작으면 다시 더한후 그값이 커지면 그 이후로는 계산을 안하면 되겠다는 생각으로 이 문제를 풀었다 이문제는 생각 보다 매우 쉬웠다 설명할것도 없이 코드를 보면 이해가 될것이다
#include <iostream>
#include<queue>
using namespace std;
int T;
queue <int> n;
int answer[12];
int solution(int start,int answerindex) {
if (start == answerindex) {
answer[answerindex]++;
}
else if (start > answerindex) {
return 0;
}
else {
solution(start + 1, answerindex);
solution(start + 2, answerindex);
solution(start + 3, answerindex);
}
return 0;
}
int main() {
cin >> T;
int temp;
std::ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
for (int i = 1; i <= T; i++) {
cin >> temp;
n.push(temp);
}
while (!n.empty()) {
temp = n.front();
n.pop();
solution(0, temp);
cout << answer[temp] << endl;
}
}