Search
Duplicate

20210119(화)

내용
BOJ) 9095, 1003
공부장소
2021/03/20 18:22

백준 알고리즘 문제풀이

문제 9095

#include <iostream> #include <vector> std::vector<int> dp_vector; std::vector<int> dp_input; int n; void output() { for (int i = 0 ; i < n ; i++) std::cout << dp_vector[dp_input[i]] << '\n'; } void solution() { dp_vector[1] = 1; dp_vector[2] = 2; dp_vector[3] = 4; for (int i = 0 ; i < n ; i++) for (int j = 4 ; j <= dp_input[i]; j++) dp_vector[j] = dp_vector[j - 3] + dp_vector[j - 2] + dp_vector[j - 1]; } void input() { int MAX = 0; std::cin >> n; dp_input.resize(n); for (int i = 0 ; i < n ; i++) { std::cin >> dp_input[i]; MAX = std::max(MAX, dp_input[i]); } dp_vector.resize(MAX); } void preset() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL); } int main() { preset(); input(); solution(); output(); }
C++
복사

문제 1003

#include <iostream> #include <vector> std::vector<int> dp_vector; std::vector<int> input_vector; int MAX; int n; void output() { for (int i = 0 ; i < n ; i++) { if (!input_vector[i]) std::cout << "1 0\n"; else std::cout << dp_vector[input_vector[i] - 1] << " " << dp_vector[input_vector[i]] << '\n'; } } void solution() { dp_vector[0] = 0; dp_vector[1] = 1; for (int j = 2; j <= MAX; j++) dp_vector[j] = dp_vector[j - 2] + dp_vector[j - 1]; } void input() { std::cin >> n; input_vector.resize(n); for (int i = 0 ; i < n ; i++) { std::cin >> input_vector[i]; MAX = std::max(MAX, input_vector[i]); } dp_vector.resize(MAX + 1); } void preset() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL); } int main() { preset(); input(); solution(); output(); }
C++
복사