Search
Duplicate

아방가르드 타일링

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

import sys; sys.setrecursionlimit(1000000) cache = [-1] * 100001 cache[0] = 1 cache[1] = 1 cache[2] = 3 cumsumcache = [-1] * 100001 def cumulative(n): # solve(n) + solve(n-3) + .... if n < 0: return 0 if cumsumcache[n] != -1: return cumsumcache[n] cumsumcache[n] = solve(n) + cumulative(n-3) return cumsumcache[n] def solve(n): if n < 0: return 0 if cache[n] != -1: return cache[n] v = 0 v += solve(n-1) * 1 v += solve(n-2) * 2 v += solve(n-3) * 1 v += 4 * cumulative(n-3) + 2 * cumulative(n-4) + 2 * cumulative(n-5) cache[n] = v % 1000000007 cumsumcache[n] = cache[n] + cumsumcache[n-3] return cache[n] def solution(n): return solve(n)
Python
복사

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges