728x90
반응형
✏️ 문제
✏️ 풀이
2xn 타일링 문제에서 2x2타일이 추가된 형태의 문제로 점화식만 살짝 수정해주면 된다.
2xn 타일링 문제는 아래에서 다시 풀어보자
이전의 문제에서는 점화식이 cache[n] = cache[n-1] + cache[n-2] 꼴이었다.
세로로된 타일이 하나 존재할때 2x(n-1)로 된 영역 을 채우는 경우의 수를 고려하고
가로로 누운 타일이 두개 쌓여있을때는 2x(n-2)로 된 영역 을 채우는 경우의 수를 고려해 둘을 더하는 형태였다.
이번 문제에서 바뀐 것은 무엇인가? <가로로 누운 타일이 두개 쌓여있는 경우> 가 <2x2 타일이 하나 있는 경우>로 대체될 수 있게 된 것이다. 따라서 점화식은 아래와 같이 바꿀 수 있다.
cache[n] = cache[n-1] + cache[n-2]*2
(Python)
n = int(input())
# memoization을 위함
cache = [0]*1001
# n이 1,2인 경우는 명확하니까 미리 선언해둔다.
cache[1]=1
cache[2]=3
# dynamic programming
for i in range(3,1001):
cache[i] = (cache[i-1]+cache[i-2]*2)%10007
print(cache[n])
728x90
반응형
'프로그래밍 > 백준' 카테고리의 다른 글
백준 2579: 계단오르기 해설- python (0) | 2022.01.30 |
---|---|
백준 2748번 런타임에러(IndexError) (0) | 2022.01.27 |
백준 9095: 1, 2, 3 더하기 해설- python (0) | 2022.01.26 |
백준 11726: 2xn 타일링 해설- python (1) | 2022.01.23 |
백준 1463: 1로 만들기 해설- python (0) | 2022.01.23 |