Algorithm, boj, 타일채우기(2133)
풀이
- n이 홀수일때 모두 채울수없다
- n=2 일때 3가지는 고정
- n=4 일때 2+2=4 이므로 2dp[2] + 4dp[0] ; 고정3가지 말고 4개를 한번에 만들수 있는 방법은 2가지
- 문제 해결의 핵심 : 길이가 2씩 늘어날때마다 2가지 경우가 계속 추가되는 것을 반영해줘야 문제를 해결할 수 있다!!!
package org.baekjoon;
import java.util.Scanner;
public class test2133_dp_fillTile {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] dp = new int[31];
dp[0] = 1;
dp[3] = 3;
if(num % 2 == 0) {
for (int i = 2; i <= num; i += 2) {
dp[i] = dp[i - 2] * 3;
// 길이가 2씩 늘어날때마다 2가지 경우가 계속 추가되는 것을 반영해줘야 문제를 해결할 수 있다.
for (int j = 4; j <= i; j += 2) dp[i] += dp[i - j] * 2;
}
}
System.out.println(dp[num]);
}
}
Reference