백준
[JAVA] 백준 11726번: 2xn 타일링
스파게티 코더
2024. 7. 29. 21:35
문제
- 2xn 크기의 직사각형을 1x2, 2x1 타일로 채우는 방법의 수를 출력하는 문제.
아이디어
- 각 사이즈의 직사각형을 채울 수 있는 방법의 수 간 규칙성을 찾는다.
- 방법의 수는 각각 1, 2, 3, 5, ... 순으로 증가한다.
- 이를 점화식으로 표현하면 다음과 같다.
$$a_{n} = a_{n-1} + a_{n-2}$$
풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[1001];
int n = Integer.parseInt(br.readLine());
arr[1] = 1;
arr[2] = 2;
// 점화식 그대로 구현
for(int i=3; i<1001; i++) {
arr[i] = arr[i-1] + arr[i-2];
arr[i] %= 10007;
}
System.out.println(arr[n]);
}
}