chldkato

백준 2133 타일 채우기 (파이썬) 본문

백준

백준 2133 타일 채우기 (파이썬)

chldkato 2020. 3. 3. 15:51

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

 

2133번: 타일 채우기

문제 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. 입력 첫째 줄에 N(1 ≤ N ≤ 30)이 주어진다. 출력 첫째 줄에 경우의 수를 출력한다. 예제 입력 1 복사 2 예제 출력 1 복사 3 힌트 아래 그림은 3×12 벽을 타일로 채운 예시이다....

www.acmicpc.net

2칸을 새로 채우는 경우는 3가지 이므로 a[i] = 3 * a[i-2]이다

4칸을 채우는 경우부터는 아래와 같은 타일이 생긴다

| = |

ㅡㅡ

4번째 전 값부터(i-4) 0까지 각각 2를 곱한 것을 반복문으로 더해나가면 처리할 수 있다

import sys

input = sys.stdin.readline

n = int(input())

a = [0 for _ in range(n+1)]
a[0] = 1
for i in range(2, n+1, 2):
    a[i] = a[i-2] * 3
    for j in range(i-4, -1, -2):
        a[i] += a[j] * 2

print(a[n])

'백준' 카테고리의 다른 글

백준 1912 연속합 (파이썬)  (0) 2020.03.03
백준 2193 이친수 (파이썬)  (0) 2020.03.03
백준 1793 타일링 (파이썬)  (0) 2020.03.03
백준 11727 2xn 타일링 2 (파이썬)  (0) 2020.03.03
백준 11726 2xn 타일링 (파이썬)  (0) 2020.03.03
Comments