티스토리 뷰

문제 링크입니다 : https://www.acmicpc.net/problem/11727

 

11727번: 2×n 타일링 2

2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다.

www.acmicpc.net

 

전형적인 DP 문제였다.

 

2020/08/14 - [알고리즘/백준(BOJ)] - 백준 - 11726 2xn 타일링

에 아주 약간의 조건을 추가한 문제이다. 문제 자체는 쉽다.

 

 

#include <iostream>
#include <vector>

using namespace std;

int n;
vector<int> cache;

int tiling(int index) {
    if(n - 1 == index) return 1;
    if(n - 2 == index) return 3;

    int& ret = cache[index];
    if(ret != -1) return ret;

    ret = (tiling(index + 1) + tiling(index + 2) * 2) % 10007;

    return ret;
}

int main() {
    cin >> n;

    cache.assign(n, -1);

    cout << tiling(0);

    return 0;
}

 

 

 

개발 환경 : vscode

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

 

'알고리즘 > 백준(BOJ)' 카테고리의 다른 글

백준 - 2805 나무 자르기  (0) 2020.08.14
백준 - 9465 스티커  (0) 2020.08.14
백준 - 11726 2xn 타일링  (0) 2020.08.14
백준 - 2193 이친수  (0) 2020.08.14
백준 - 1074 Z  (0) 2020.08.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함