Algorithm(BOJ, Python)/Dynamic Programing

[백준_2133] 타일 채우기 python

kurooru 2022. 8. 17. 14:23

dp 를 풀었을 때 뭔가 찜찜한 느낌이 들면

그 느낌은 결코 배신하지 않는 것 같다.

 

각 경우마다 새로운 조합이 2개씩 생겨난다는 것을 생각치 못하였다.

# dp 설계
dp = [
    0 for _ in range(31)
]

# dp 초기설정
dp[2] = 3
dp[4] = 11

# dp 채워넣기
for i in range(6, 31, 2):
    # 두번 전의 값 * 3
    dp[i] = dp[i-2] * 3

    # 네번째 전, 여섯 번째 전 ,,,
    for j in range(4, i, 2):
        # 각각 2개씩 경우의수가 붙음
        dp[i] += dp[i-j] * 2
    
    # 새로운 조합 2개 나옴
    dp[i] += 2

# n 입력
n = int(input())

# 출력
print(dp[n])