일단 이 문제는 점화식으로 표현할 수 있다면 쉽게 풀 수 있는 문제다.
$$A_n = A_{n-1} + A_{n-2}$$
처음 1,2 까지의 값만 다른 피보나치 수열이다.
점화식을 알았으니
반복문 또는 재귀함수를 이용해서 풇어주면 된다.
반복문을 이용해서 풀어보았다.
# 1904번 - 01타일
# 반복문을 이용해서 - 바텀업
import sys
input = sys.stdin.readline
n = int(input())
tile_list = [0]*(n+1)
tile_list[1] = 1
tile_list[2] = 2
for i in range(3,n+1):
tile_list[i] = (tile_list[i-1] + tile_list[i-2])%15746
print(tile_list[n])
이때 주의해야 할 점은 tile_list에 15746을 나누어주지 않고 변수설정을 해버리면 나중에 메모리초과가 뜨게 된다.
728x90
'알고리즘 문제풀이 > Dynamic programming' 카테고리의 다른 글
백준 1932 파이썬(DP) (0) | 2021.10.12 |
---|---|
백준 1149 파이썬(DP) (0) | 2021.10.11 |
백준 9416 파이썬(DP) (0) | 2021.10.10 |
백준 9184 파이썬(DP - 메모이제이션) (0) | 2021.10.09 |
백준 1003 파이썬(DP - 피보나치함수) (0) | 2021.10.09 |