백준 algorithm

백준 11727 - 2×n 타일링 2

cosmohoo 2019. 8. 31. 17:58
반응형

처음 풀어보는 문제라 많이 버벅거렸다. 
30분이상 생각하다가 답이 안나와 구글링하여 답을 보고 내 방식대로 짜봤다. 
참고로 vector로 풀어서 좋을건 하나도 없을 거 같다. 

배열로만 풀어도 되는 문제다. 

answer[i] = answer[i-1] + (answer[i-2]*2)
의 식만 적용하면 풀수 있는 간단한 문제다. 
알고리즘 문제를 풀때는 항상 종이와 펜이 필수다.

#include <iostream>
#include <vector>

using namespace std;

int method(int n)
{
	vector<int> answer;
	answer.push_back(0);
	answer.push_back(1);
	answer.push_back(3);
	if (n == 1)
	{
		return answer[1];
	}
	else if (n == 2)
	{
		return answer[2];
	}
	else
	{
		for (int i = 3; i <= n; i++)
		{
			int value = 0;
			value = answer[i - 1] + (answer[i - 2] * 2);
			answer.push_back(value%10007);
		}
		return answer[n] ;
	}
}

int main()
{
	int n;//2xn 크기의 직사각형
	cin >> n;
	method(n);
	cout << method(n);
	cout << endl;
	return 0;
}
반응형