산 모양 타일링

Lv. 3

Solution

export function countMoutainTile(n: number, tops: number[]): number {
  const MOD = 10007;
  const sum = (...nums: number[]): number => {
    return nums.reduce((acc, curr) => (acc + curr) % MOD, 0);
  };
 
  let [none, left, center, right] = [1, 1, tops[0], 1];
  for (let i = 1; i < n; i++) {
    const total = sum(none, left, center, right);
    [none, left, center, right] = [
      total,
      sum(none, left, center),
      tops[i] === 0 ? 0 : total,
      total,
    ];
  }
 
  return sum(none, left, center, right);
}