📖 [백준알고리즘 풀이] Q.11727 2×n 타일링 2
📖 문제
https://www.acmicpc.net/problem/11727
🔍 접근법
2xn 타일링 문제입니다.
주어진 타일은 1x1 2x1 2x2 타일 총 세가지가 있습니다.
1x1 2x1 로 n-1 번째 까지 채우는 2가지 경우가 있고
2*2 로 n-2 번째 까지 채우는 1가지 경우가 있습니다.
d[n] = (n-1) + 2 * (n-2)
라는 점화식이 도출 가능합니다.
💻 코드
package problem.dynamic.Q11727;
import java.io.*;
public class Main_11727 {
static int d[];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
d = new int[n+1];
bw.write(Integer.toString(tiling(n)));
bw.flush();
bw.close();
br.close();
}
public static int tiling(int n){
if(d[n]>0)
return d[n];
if(n<=1){
d[n] = 1;
}
else {
d[n] = (tiling(n - 1) + tiling(n - 2)*2) % 10007 ;
}
return d[n];
}
}
Written on April 29, 2020