Skip to content

Commit 96578be

Browse files
committed
AC(60ms): #dp #case_works O(N)
1 parent 3adf85f commit 96578be

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# 타일 채우기
2+
3+
from functools import cache
4+
5+
6+
@cache
7+
def tile(n: int, *is_filled: bool) -> int:
8+
if n == 0:
9+
return 1 if all(is_filled) else 0
10+
match is_filled:
11+
case (False, False, False):
12+
return tile(n-1, True, True, True)
13+
case (False, False, True):
14+
return tile(n-1, True, True, False)
15+
case (False, True, False):
16+
return tile(n-1, True, False, True)
17+
case (False, True, True):
18+
return tile(n-1, True, False, False) + tile(n-1, True, True, True)
19+
case (True, False, False):
20+
return tile(n-1, False, True, True)
21+
case (True, False, True):
22+
return tile(n-1, False, True, False)
23+
case (True, True, False):
24+
return tile(n-1, False, False, True) + tile(n-1, True, True, True)
25+
case (True, True, True):
26+
return tile(n-1, True, True, False) + tile(n-1, False, True, True) + tile(n-1, False, False, False)
27+
28+
29+
if __name__ == "__main__":
30+
N = int(input())
31+
print(tile(N, True, True, True))

0 commit comments

Comments
 (0)