우선 이 문제를 풀기전에 기본적인 타일 문제를 풀고 풀어보자.
EX. BOJ 11726, BOJ11727
1. 기본적인 타일문제의 DP를 이용하여 해결한다.
2. 중복검사를 진행한다.
***은 중복검사 부분에 대해서 시간이 된다면 다시 생각해 보면 좋을것 같다.
#include <iostream>
#include <algorithm>
#include <string.h>
#pragma warning(disable:4996)
using namespace std;
int map[35],mx;
int main()
{
fill_n(&map[0], 35, 0);
map[1] = 1;
map[2] = 2;
scanf("%d", &mx);
for (int i = 1; i < mx; i++)
{
map[i + 1] += map[i];
map[i + 2] += map[i]*2;
}
// 1. 기본적인 타일문제의 DP를 이용하여 해결한다.
if (mx == 1)
printf("%d", 1);
else if (mx % 2 == 0)
printf("%d", (map[mx]+map[mx/2+1])/2);
else
printf("%d", (map[mx]+map[mx/2])/2 );
// 2. 중복검사를 진행한다.
return 0;
}'IT > BOJ' 카테고리의 다른 글
| 백준(BOJ) 2629 부등호 * (0) | 2018.06.01 |
|---|---|
| 백준(BOJ) 1759 암호만들기 * (0) | 2018.06.01 |
| 백준(BOJ) 14501 퇴사 * (0) | 2018.06.01 |
| 백준(BOJ) 1126 같은 탑 *** (0) | 2018.06.01 |
| 백준(BOJ) 2470번 두 용액 ** (0) | 2018.06.01 |