알고리즘 문제풀이/Dynamic programming
백준 1904 파이썬(DP)
Aytekin
2021. 10. 10. 19:41
728x90
반응형
일단 이 문제는 점화식으로 표현할 수 있다면 쉽게 풀 수 있는 문제다.
$$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
반응형