문제 링크
풀이 과정
전체 코드
def solution(n, tops):
# 나머지
mode = 10007
# 사다리꼴 i번째 윗변을 역마름모로 채우는 방법
reverse_rhombus = [0 for _ in range(n+1)]
reverse_rhombus[1] = 1
# 사다리꼴 i번째 윗변을 나머지 도형으로 채우는 방법
not_reverse_rhombus = [0 for _ in range(n+1)]
if tops[0] == 0: not_reverse_rhombus[1] = 2
else: not_reverse_rhombus[1] = 3
for i in range(2, n+1):
if tops[i-1] == 0: # 사다리꼴 i번째 윗변에 정삼각형이 없는 경우
not_reverse_rhombus[i] = (
reverse_rhombus[i-1] + 2 * not_reverse_rhombus[i-1]
) % mode
else: # 사다리꼴 i번째 윗변에 정삼각형이 있는 경우
not_reverse_rhombus[i] = (
2 * reverse_rhombus[i-1] + 3 * not_reverse_rhombus[i-1]
) % mode
reverse_rhombus[i] = (reverse_rhombus[i-1] + not_reverse_rhombus[i-1]) % mode
return (not_reverse_rhombus[n] + reverse_rhombus[n]) % mode
Python
복사