PS/Baekjoon Online Judge

[백준 11727] 2×n 타일링 2 [C]

kimyoungrok 2021. 8. 8. 15:56

백준 - 11727


풀이

"백준 11726, 2×n 타일링" 문제와 비슷하다. 심지어 정답도..

2x1 타일을 1, 1x2 타일을 2, 2x2 타일을 T라고 가정할 때 다음과 같이 나타낼 수 있다.

N 타일 dp[1]
2 11
2, T
3
3 111
12,1T
21,2T
5
4 1111
112,11T
121,1T1
211,T11
22,TT
2T,T2
11
5 11111
1112,111T
1121,11T1
1211,1T11
2111,T111
122,1TT
212,T1T
221,TT1
12T,1T2
21T,T12
2T1,T21
21
6 " 43
7 " 85
8 " 171

N번째 방법의 수는 "2 * (N-2번째 방법의 수) + (N-1번째 방법의 수)" 와 같음을 알 수 있다.


소스코드

#include <stdio.h>
#define MOD 10007
int main(){
    int N, dp[2] = {0, 1};
    scanf("%d", &N);
    while (N--){
        int temp = (2*dp[0]+dp[1])%MOD;
        dp[0] = dp[1], dp[1] = temp;
    }
    printf("%d", dp[1]);
}

출처

 

11727번: 2×n 타일링 2

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

www.acmicpc.net

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 11047] 동전 0 [C]  (0) 2021.08.09
[백준 10993] 별 찍기 - 18 [C]  (0) 2021.08.08
[백준 18870] 좌표 정렬 [C/C++]  (0) 2021.08.08
[백준 11399] ATM [C]  (0) 2021.08.07
[백준 13015] 별 찍기 - 23 [C]  (0) 2021.08.07