#include <iostream> using namespace std; int Fibonacci(int n) { int arr[3] = { 0,1,1 }; for (int i = 2; i < n; i++) { arr[(i + 1) % 3] = arr[i % 3] + arr[(i - 1) % 3]; } return arr[n % 3]; } int main(void) { int num; cin >> num; cout << Fibonacci(num); return 0; } |
피보나치 수열 포문으로 만드는 것 이렇게 가능하구나, 오케이요. 피보나치 수열에 대해서 이렇게 풀어쓰기가 가능합니다. 오케이요. 재귀로 만드는 것도 가능합니다. |
#include <iostream> #include <cstring> #include <cstdio> using namespace std; template <typename T> class fibonacci { private: T cache[91]; int n; public: fibonacci() { memset(cache, -1, sizeof(T) * 91); cache[0] = 0; cache[1] = 1; } void setN() { cin >> n; } void solution() { if (n < 2) { printIdx(n); } else { recursive(n); printIdx(n); } } T recursive(int n) { if (cache[n] > -1) return cache[n]; cache[n] = recursive(n - 2) + recursive(n - 1); return cache[n]; } void printIdx(int n) const { cout << cache[n] << endl; } void printAll() const { for (int i = 0; i < 91; i++) { printf("[%d]->%lld\n", i, cache[i]); } } }; int main(void) { fibonacci<long long> fi; fi.setN(); fi.solution(); return 0; } |
이것말고 다른 방법으로 풀이가 가능한가요? 이것은 데이터를 간다하게 처리하는 방법인 것 같은데, 어떻게 확인할 수 있을까요.
여기서 알 수 있는 것들은 자료형을 정의할 수 있다는 것입니다. 그리고 클래스를 정의했습니다. 프라이빗이랑 퍼블릿 차이가 명확히 무엇인지를 알아봅니다. |