반응형
자정 넘기 전에 풀고 싶었는데!!
모르겠다,,,
그리고 나는 규칙성 찾아서 풀었는데 경우의 수 구하는 방법으로 접근하고 싶다
(내가 경우의 수 약함 ㅠㅠ 중복되는 경우의 수를 어떻게 제외 시켜줄지 모르겠음)
쨋든 내일 다시 해보자
예제 입출력은 모두 맞는데 제출하면 틀렸다고 나온다.
사이즈도 unsigned long long 해서 1000까지 나오는데!
#include < iostream > using namespace std; unsigned long long arr[1001] = {0,1,3,5,}; int n; unsigned long long getN(int _n) { if ( arr[_n] !=0 ) { return arr[_n]; } return arr[_n] = getN(_n - 1) + 2 * getN(_n - 2); } int main(void) { // 입력 cin >> n; cout << getN(n) % 10007 << endl; return 0; }
코드 아래처럼 수정했더니 맞았다.
왜인지 모르겠음 -_-!!!!
unsigned long long 을 사용해도 stack overflow 문제 발생하는데 내가 모르는 건가??
#include < iostream > using namespace std; unsigned long long arr[1001] = {0,1,3,5,}; int n; unsigned long long getN(int _n) { if ( arr[_n] !=0 ) { return arr[_n]; } return arr[_n] = (getN(_n - 1) + 2 * getN(_n - 2))%10007; } int main(void) { // 입력 cin >> n; cout << getN(n) << endl; return 0; }
*개선방향*
재귀함수로 계속 타고 들어가면서 arr을 채워주고 있지만
사실 main에서 반복문을 사용해서 arr을 채워주는게 더 좋은 방법같다!
반응형