[Programmers] 3 x n 타일링
2023. 9. 6. 19:57ㆍComputer Sciences/Problem Solve
https://school.programmers.co.kr/learn/courses/30/lessons/12902
문제 설명
2 x n 타일링 문제를 풀고 같은 유형이라고 판단된 3 x n 타일링 문제를 풀어보았다. 규칙을 간단히 찾을 줄 알았으나 쉽지 않았고 규칙을 찾기 위해 직접 세보려고 했으나 n이 6인 경우부터 엄청나게 많은 경우의 수가 나오는 것을 알게 됐고 다른 설명글을 참고하게 되었다. 규칙은 f(n)= f(n-2)*4 - f(n-4) 이다. 그리고 이 규칙을 사용하기 위해서는 모듈러 분배법칙을 알고 있어야 한다. 수가 엄청나게 커지기 때문에 이를 모듈러 연산을 통해 줄여야 한다.
- (A + B) % M = ((A % M) + (B % M)) % M
- (A * B) % M = ((A % M) * (B % M)) % M
- (A - B) % M = ((A % M) - (B % M)) % M
규칙과 모듈러 연산을 알았으므로 코드로 작성하자.
코드
class Solution {
public int solution(int n) {
long[] d = new long[n + 1];
int mod = 1_000_000_007;
d[2] = 3;
d[4] = 11;
for (int i = 6; i <= n; i += 2) {
d[i] = (d[i - 2] * 4 % mod - d[i - 4] % mod + mod) % mod;
}
return (int) d[n];
}
}
'Computer Sciences > Problem Solve' 카테고리의 다른 글
[Programmers] 연속 부분 수열 합의 개수 (0) | 2023.09.07 |
---|---|
[Programmers] 두 큐 합 같게 만들기 (0) | 2023.09.07 |
[Programmers] 2 x n 타일링 (0) | 2023.09.06 |
[Programmers] 숫자 변환하기 (0) | 2023.09.06 |
[Programmers] 롤케이크 자르기 (0) | 2023.09.06 |