우선 이 문제를 풀기전에 기본적인 타일 문제를 풀고 풀어보자.
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 |