개발하는 kim-hasa

[c++][BOJ][11726] 2 x n 타일링 본문

Algorithm/BOJ

[c++][BOJ][11726] 2 x n 타일링

kim-hasa 2022. 2. 28. 16:47

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

 

11726번: 2×n 타일링

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

www.acmicpc.net

2 x n 크기의 직사각형을 1 x 2 , 2 x 1 타일로 채우는 방법의 수를 구하는 문제입니다.

 

2 x k 크기의 직사각형을 채우는 것은 ,

 

1. 2 x ( k - 1 ) 크기의 직사각형에 2 x 1 짜리 타일 하나 추가하는 것과

 

2. 2 x ( k - 2 ) 크기의 직사각형에 1 x 2 짜리 타일 두개를 추가하는 것과 같습니다.

 

즉 , k번째를 채우는 방법의 수는 k - 1 과 k - 2 를 더하는 것과 같습니다.

 

이 수는 피보나치 수열로 나타낼 수 있는데 , 더할때마다 10007로 나누어야 에러가 나지 않습니다.

#include <iostream>
using namespace std;

int main(){
    int n ;
    cin >> n;
    
    int count = 0;
    
    int arr[1001] = {0};
    arr[1] = 1;
    arr[2] = 2;
    
    int index = 3;
    
    while(index <= n){
        arr[index] = (arr[index-1] + arr[index-2]) % 10007;
        index++;
    }
    
    cout << arr[n];
}

'Algorithm > BOJ' 카테고리의 다른 글

[c++][BOJ][9095] 1, 2, 3 더하기  (0) 2022.02.28
[c++][BOJ][11727] 2 x n 타일링 2  (0) 2022.02.28
[c++][BOJ][2667] 단지번호 붙이기  (0) 2022.02.28
[c++][BOJ][1012] 유기농 배추  (0) 2022.02.28
[c++][BOJ][2805] 나무 자르기  (0) 2022.02.28