백준 2133번 : 타일 채우기 (java)
2021. 9. 15. 14:49ㆍAlgorithm/백준

문제를 읽고 처음 dp 타일 연습문제와 비슷하다고 생각하여 쉽게 접근하였다. 하지만 fail 이 뜸.

잘 이해하지 못해서 해설 여러개를 보았다. 그 중에서 가장 이해가 잘 된 해설이다.
https://fbtmdwhd33.tistory.com/79
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Baekjoon2133 {
static int[] dp;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(in.readLine());
dp = new int[n + 1];
dp[0] = 1; // 아무것도 선택하지 않았다도 1로 포함
dp[1] = 0;
if (n > 1) {
dp[2] = 3;
}
for (int i = 4; i <= n; i += 2) { // 2씩 증가. 짝수니까
dp[i] = 3 * dp[i - 2]; // i-2 번째 에다가 3을 곱함. 처음만 3을 곱한다. 3개 경우의 수니까
for (int j = 0; j < i - 2; j += 2) { // i-2번 째 수보다 작은 경우 반복
dp[i] += dp[j] * 2; // dp[i] 값에 계속 더해 준다
}
}
System.out.println(dp[n]);
}
}
728x90
'Algorithm > 백준' 카테고리의 다른 글
백준 2810번: 컵홀더 (0) | 2022.03.19 |
---|---|
백준 11726번: 2xn 타일링 (0) | 2021.09.15 |
백준 8958번: OX퀴즈 (0) | 2021.08.31 |
백준 3052번: 나머지 (0) | 2021.08.31 |
백준 10163번 : 색종이 (java) (0) | 2021.08.25 |