본문 바로가기
알고리즘/백준

백준 11726번 (2xn 타일링) c++

by Jo_Wick 2023. 6. 28.

https://www.acmicpc.net/problem/11726

 

11726번: 2×n 타일링

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

www.acmicpc.net

문제 풀이

 

이 문제는 DP를 이용하여 푸는 문제이다.

다른 많은 풀이 사이트에서는 단순히 DP[i] = DP[i-1] + DP[i-2] 라는 이유를 N에 따라 세어보았을 때 이게 말이 된다라는 식으로 많이 적어놓았다.

하지만 밑에 적어 놓은 것을 보면 제대로 된 규칙을 알 수 있다.

DP[i-2] 에는 1x2인 2개의 타일이 붙고,
DP[i-1] 에는 2x1인 1개의 타일이 붙은 두가지 경우의 수를 합치면 DP[i]가 완성되는 것이다.

 

전체 코드

#include <iostream>

using namespace std;

int dp[1001] = {0,};

int main(){

        int N;

        cin >> N;

        dp[0] = 1;
        dp[1] = 1;

        for(register int i = 2; i <= N; i++){
                dp[i] = (dp[i-1] + dp[i-2]) % 10007;
        }

        cout << dp[N] << '\n';

        return 0;

}

 

 

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

백준 11727번 (2xn 타일링 2) c++  (0) 2023.06.28
백준 1158(요세푸스) c++  (0) 2023.04.21
백준 1874번(스택 수열) c++  (1) 2023.04.18
백준 에디터 (1406번) c++  (0) 2023.04.18
백준 9012번(괄호)  (0) 2023.04.17

댓글