컴퓨터 공학/백준
[백준] JAVA 자바 : 2×n 타일링 2 (11726번)
kim-dev
2024. 1. 22. 20:59
반응형
직전 문제인 2×n 타일링에서 추가할 수 있는 블럭의 개수가 하나 늘어난 케이스이다.
이건 2×n 타일링 문제를 이해하고 푸셨다면… 진짜 2분 안에 해결하실 수 있을 것 같다.
기존의 dp[i] = dp[i-1] + dp[i-2]라는 코드는 dp[i]에 1×2로 채우는 경우 + 2×1로 채우는 경우를 뜻했다.
그러나 2×1로 채우는 경우의 수는 2×2로 채우는 경우의 수와 똑같으므로… dp[i-2]를 더해줄 때 2배를 해서 더해주면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Tiling_2n_2 {
public static int stoi(String str) {
return Integer.parseInt(str);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int X = stoi(br.readLine());
long[] dp = new long[X+1];
dp[0] = 1;
dp[1] = 1;
for (int i=2; i<=X; i++) {
dp[i] = (dp[i - 1] + dp[i - 2]*2) % 10007; // 2배 곱하여 더해준다.
}
System.out.println(dp[X]);
}
}
로그인
www.acmicpc.net
작성일자: 2023-11-24