모든 문제에서 점화식 세우는 과정은 필수적이다
Ezral 여눈부터 가네 ㅈㅈ - 20500
나머지를 저장하지 않고 숫자 자체를 저장해도 되기는 하다.
다만, 나머지를 저장해서 풀면 좋을 듯하다.
나머지의 역연산에 대한 대처가 중요할 수 있는 문제다.
let FIVE = 1, ONE = 0, MOD = 1_000_000_007 let N = Int(readLine()!)! var dp = [[[Int]]](repeating:[[Int]](repeating:[Int](repeating:0,count:2),count:3),count:N+1) dp[1][1][ONE] = 1 dp[1][2][FIVE] = 1 for i in 1..<N { for j in 0...2 { dp[i+1][(j+1)%3][ONE] = (dp[i+1][(j+1)%3][ONE] + dp[i][j][ONE]) % MOD dp[i+1][(j+1)%3][ONE] = (dp[i+1][(j+1)%3][ONE] + dp[i][j][FIVE]) % MOD dp[i+1][(j+5)%3][FIVE] = (dp[i+1][(j+5)%3][FIVE] + dp[i][j][ONE]) % MOD dp[i+1][(j+5)%3][FIVE] = (dp[i+1][(j+5)%3][FIVE] + dp[i][j][FIVE]) % MOD } } print(dp[N][0][FIVE])