|
| 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