dp에 대해 대충 알게 된듯하다.
그래도 이건 쉬운 문제니까 그러겠지
근데 이 문제에서 문제는 long 때문이다.
이 부분은 어떻게 고려해야 하는지 알고 싶다.
#include <iostream>
#include <sstream>
#include <vector>
std::vector<long> wide;
void dp(int);
int main() {
int t, m = 0;
std::cin >> t;
std::vector<int> v(t);
for (int i = 0; i < t; i++) {
std::cin >> v[i];
if (m < v[i]) {
m = v[i];
}
}
dp(m);
for (int i=0; i<t; i++) {
std::cout << wide[v[i]] <<std::endl;
}
return 0;
}
void dp(int size) {
wide.resize(size+1, 0);
wide[1]=1;
wide[2]=1;
for (int i = 3; i <= size; i++) {
wide[i] = wide[i - 2] + wide[i - 3];
}
}'코딩 > cpp' 카테고리의 다른 글
| [백준]11726번 (0) | 2025.09.27 |
|---|---|
| [백준] 11659번 (0) | 2025.09.27 |
| [백준] 9375번 (0) | 2025.09.26 |
| [백준] 9095번 (0) | 2025.09.26 |
| [백준] 2579번 (0) | 2025.09.26 |