정말 오래 걸렸다. 다른 타일 채우기 문제처럼 단순히 점화식 찾아서 그대로 dp로 풀면 될 줄 알았는데 안된다. 그게 바로 두달 전.
11444번 문제 풀면서 찾아봤던 행렬 계산을 통해 풀었다.
F(n) = 3*F(n-2) + 2{F(n-4) + F(n-6) + F(n-8) +........+ F(0)}
-> 이 식에서 n 대신 n-2를 대입
F(n-2) = 3*F(n-4) + 2{F(n-6) + F(n-8) + F(n-10) +........+ F(0)}
-> 두 식을 빼면
F(n)-F(n-2) = 3*F(n-2) - F(n-4)
-> F(n) = 4*F(n-2) - F(n-4)라는 식을 구할 수 있다.
이 식을 2차 행렬로 나타내서 풀면 된다.
c[i][j] = (c[i][j]+mod)%mod
-> mod 계산을 하다보면 계산값이 양수가 아닌 음수가 나오는 경우가 있다. 그것을 방지하기 위해 보통 mod값을 더해주고 나눈다고 한다.
'Coding > 백준' 카테고리의 다른 글
3055번 탈출 (0) | 2019.09.24 |
---|---|
11778번 피보나치 수와 최대공약수 (0) | 2019.09.23 |
11444번 피보나치 수 6 (0) | 2019.09.19 |
1629번 곱셈 (0) | 2019.09.17 |
2156번 포도주 시식 (0) | 2019.09.09 |