Back to all solutions

#790 - Domino and Tromino Tiling

Problem Description

You have two types of tiles: a 2 x 1 domino shape and a tromino shape. You may rotate these shapes.

Given an integer n, return the number of ways to tile an 2 x n board. Since the answer may be very large, return it modulo 109 + 7.

In a tiling, every square must be covered by a tile. Two tilings are different if and only if there are two 4-directionally adjacent cells on the board such that exactly one of the tilings has both squares occupied by a tile.

Solution

/**
 * @param {number} n
 * @return {number}
 */
var numTilings = function(n) {
  const MOD_VALUE = Math.pow(10, 9) + 7;
  const dp = { 1: 1, 2: 2, 3: 5 };
  for (let i = 4; i <= n; i++) {
    dp[i] = (2 * dp[i - 1] + dp[i - 3]) % MOD_VALUE;
  }
  return dp[n];
};