https://school.programmers.co.kr/learn/courses/30/lessons/258705
1) 코드
def solution(n, tops):
answer = 0
a = [0]*(n+1)
b = [0]*(n+1)
MOD = 10007
a[0] = 0
b[0] = 1
for i in range(1, n+1):
if tops[i-1] == 1:
a[i] = (a[i-1] + b[i-1]) % MOD
b[i] = (2*a[i-1] + 3*b[i-1]) % MOD
else:
a[i] = (a[i-1]+b[i-1]) % MOD
b[i] = (a[i-1]+2*b[i-1]) % MOD
return (a[n]+b[n]) % 10007
2) 해설