
-Code
class Solution {
static int MOD = 1_000_000_007;
public int solution(int n) {
// 홀수의 경우 채울수 없어서 0반환
if (n % 2 == 1) return 0;
// 이전 2개의 값을 저장
long prev = 0, answer = 3;
for (int i = 4; i <= n; i += 2) {
// (최근 계산 값 * 3) + (최근 계산 이전 값의 합 * 2) + 2(새로 생긴 패턴)
long temp = (answer * 3 + prev * 2 + 2) % MOD;
// 존재하는 값으로 변경
prev = (prev + answer) % MOD;
answer = temp;
}
return (int) answer;
}
}
처음에 2 * n 타일링 푼거 처럼 계산을 하는데 홀수 부분에서도 값이 존재하는 줄알고 짜다가 이상해서 찾아보니 홀수의 크기인 부분에서는 전부 체우지 못해서 0으로 계산해야 했습니다.
이걸 알게되어 다시 수식을 찾으니 최근 계산 값 * 3 + 2인줄 알고 작성했으나 틀려서 이유를 찾아보니 6의 계산값이 틀렸고 최종 수식이 (최근 계산 값 * 3) + (최근 계산 이전 값의 합 * 2) + 2(새로 생긴 패턴) 이었고 이를 통해 해결했습니다.
'알고리즘 문제 > Java' 카테고리의 다른 글
| [프로그래머스/Java] 거리두기 확인하기 (0) | 2026.05.13 |
|---|---|
| [프로그래머스/Java] 두 큐 합 같게 만들기 (0) | 2026.05.12 |
| [프로그래머스/Java] 두 원 사이의 정수 쌍 (0) | 2026.05.10 |
| [프로그래머스/Java] 점 찍기 (0) | 2026.05.09 |
| [프로그래머스/Java] 과제 진행하기 (0) | 2026.05.08 |