<알고스팟 문제풀이>
해답)
tile = [-1 for _ in range(101)]
def TILING2(n):
if tile[n] != -1:
return tile[n]
if n < 0:
return False
if n == 1:
return 1
if n == 2:
return 2
tile[n] = TILING2(n-1) + TILING2(n-2)
return TILING2(n-1) + TILING2(n-2)
testcaseNum = int(input())
for _ in range(testcaseNum):
answer = TILING2(int(input())) % 1000000007
print(answer)
풀이)
길이가 1일때 만들 수 있는 타일의 개수 : 1개
길이가 2일때 만들 수 있는 타일의 개수 : 2개
길이가 3 이상일 때 : 길이가 1일때 만들 수 있는 타일 수 + 2일 때 만들 수 있는 타일 수
...
길이가 k 일 때 : 길이가 k-1 일 때 만들 수 있는 타일 수 + k-2일 때 만들 수 있는 타일 수
시간초과로 인해 캐싱이 필요하다. (동적 계획법)
* 문제의 저작권은 알고스팟에 있습니다.
728x90
'문제풀이 > AlgoSpot(알고스팟)' 카테고리의 다른 글
[AlgoSpot🔴] 알고스팟 > 출전 순서 정하기 / Pyton 문제풀이 (6) | 2020.03.31 |
---|---|
[AlgoSpot] 알고스팟 > WILDCARD(와일드카드) - Python 문제풀이 👀 (0) | 2020.02.17 |
댓글