본문 바로가기
SWE/코테

[성실코딩 29일차] 백준 #11727 2xn 타일링 2 *질문

by S나라라2 2018. 12. 5.
반응형

자정 넘기 전에 풀고 싶었는데!! 

모르겠다,,, 


그리고 나는 규칙성 찾아서 풀었는데 경우의 수 구하는 방법으로 접근하고 싶다

(내가 경우의 수 약함 ㅠㅠ 중복되는 경우의 수를 어떻게 제외 시켜줄지 모르겠음)


쨋든 내일 다시 해보자


예제 입출력은 모두 맞는데 제출하면 틀렸다고 나온다.

사이즈도 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을 채워주는게 더 좋은 방법같다!


반응형