alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 1793 타일링_파이썬 본문

Algorithm/백준 알고리즘_Python

[알고리즘][Python] 백준(BOJ) 1793 타일링_파이썬

알파이 2020. 10. 6. 08:14

 

1793 타일링    www.acmicpc.net/problem/1793

 

1793번: 타일링

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 숫자 0 ≤ n ≤ 250이 주어진다. 

www.acmicpc.net

 

 

 

 

문제 풀기 전 공부할 것 : 다이나믹 프로그래밍

 

 

 

 

 

 

 

풀이

<내용>

  • n이 0, 1, 2일 때를 초기화한다.
  • n번째 직사각형을 채우는 방법은 n-1번째 직사각형에서 2x1 타일을 더하는 방법과 n-2번째 직사각형에서 2x2 타일을 더하는 방법, 2x1 가로 2개 타일을 더하는 방법이 있다.
  • n마다 직사각형을 채우는 방법을 출력한다.

 

 

<코드>

import sys
input = sys.stdin.readline

def solve(n):
    dp = [1, 1, 3]
    for i in range(3, n+1):
        dp.append(dp[i-1] + dp[i-2]*2)
    return dp[n]
    
while True:
    n = input().rstrip()
    if n.isdigit():
        print(solve(int(n)))
    else:
        break

 

 

 

 

 

 

 

728x90
반응형
Comments