본문 바로가기
Algorithm/프로그래머스

[프로그래머스]연습문제 : 2 x n 타일링 (level 3)(c++)

by HBGB 2020. 6. 22.

https://programmers.co.kr/learn/courses/30/lessons/12900

 

코딩테스트 연습 - 2 x n 타일링

가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 ��

programmers.co.kr

 

DP

#include <string>
#include <vector>

using namespace std;

const long long MOD = 1000000007;
const int MAX = 60000;
long long D[MAX + 1];

int solution(int n) {

    D[0] = 1;
    D[1] = 1;

    // 점화식 : D[n] = D[n - 1] + D[n - 2
    for (int i = 2; i <= n; ++i)
    {
        D[i] = (D[i - 1] + D[i - 2]) % MOD;
    }

    return D[n];
}

 

 

BOJ 11726번 문제와 동일하다

점화식을 잘 세워서 DP로 풀면 된다.

댓글