function solution(n) {
// dp[0]은 길이가 0인 바닥을 채우는 방법의 수 (0가지)
// dp[1]은 길이가 1인 바닥을 채우는 방법의 수 (1가지)
// dp[2]는 길이가 2인 바닥을 채우는 방법의 수 (2가지)
let dp = [0, 1, 2];
// 길이가 3부터 n까지의 바닥을 채우는 방법의 수를 계산하기 위한 반복문
for (let i = 3; i <= n; i++) {
// dp[i]는 dp[i-1] (타일을 세로로 배치하는 경우)와
// dp[i-2] (타일을 가로로 배치하는 경우)의 합
dp[i] = (dp[i - 1] + dp[i - 2]) % 1000000007;
}
// 길이가 n인 바닥을 채우는 방법의 수 반환
return dp[n];
}