"""
백준 5569
"""
w, h = map(int, input().split())
dp = [[[[0 for __ in range(2)] for _ in range(2)] for j in range(w)] for i in range(h)]
for i in range(1,w): dp[0][i][1][0] = 1
for i in range(1,h): dp[i][0][1][1] = 1
# 0 0 회전 불가능 가로로
# 1 1 회전 가능 세로로
for i in range(1, h):
for j in range(1,w):
dp[i][j][0][0] = dp[i][j-1][1][1]
dp[i][j][0][1] = dp[i-1][j][1][0]
dp[i][j][1][0] = dp[i][j-1][0][0] + dp[i][j-1][1][0]
dp[i][j][1][1] = dp[i-1][j][0][1] + dp[i-1][j][1][1]
print((sum(dp[-1][-1][0]) + sum(dp[-1][-1][1])) % 100000)
현재 블록에 가로라인으로 들어와서 회전이 불가능한 경우 = 회전이 가능한 세로로부터
현재 블록에 가로라인으로 들어와서 회전이 가능한 경우 = 회전 불가능한 가로 + 회전 가능한 가로
(회전 가능한 가로는 원래 가능했고 불가능했던 가로는 다음 칸에서 가능해지기 때문)
dp = [_ for _ in range(int(input())+1)]
for i in range(3,len(dp)):dp[i] = dp[i-2] + dp[i-1]
print(dp[-1] % 10007)
2*n 타일링
n-1에서는 1짜리 타일만 놓아서 n으로 올 수 있고, n-2에서는 2짜리 타일만 놓아서 n으로 올 수 있다 (1 짜리 2개 놓는 것은 위의 경우에 포함이므로 제외)
결론 : 피보나치 수열
'컴퓨터 > 코테' 카테고리의 다른 글
백준 2533 SNS (0) | 2021.09.10 |
---|---|
카카오 매출하락 최소화 - 트리 dp (0) | 2021.09.10 |
백준 7576 - 토마토 (0) | 2021.09.07 |
프로그래머스 여행경로 - 백트래킹 (0) | 2021.09.06 |
릿코드 37- Sudoku Solver, nQueen 다시풀기 (0) | 2021.09.01 |