[11726 2xn 타일링]
난이도: 실버3
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
문제
입력
출력
[아이디어]
D[i] = 2 x i 의 직사각형을 채우는 방법 이라고 정하자.
2 x 1 의 크기의 블럭을 놓은 경우 2 x (n - 1) 크기의 블럭을 채워야한다.
1 x 2 크기의 블럭은 2개를 같이 놓는 방법뿐이다. 이 때 2 x (n - 2) 크기의 블럭을 채워야한다.
따라서 D[i] = D[i-1] + D[i-2] 의 점화식이 나온다.
[JAVA 코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static int N, mod = 10007;
static int [] D;
public static void main(String[] args) throws NumberFormatException, IOException {
N = Integer.parseInt(br.readLine());
D = new int[N+1];
if(N == 1) {
System.out.println(1);
return;
}
D[1] = 1;
D[2] = 2;
for(int i = 3; i <= N; i++) {
D[i] = (D[i - 2] + D[i - 1]) % mod;
}
System.out.println(D[N]);
}
}
'알고리즘 > BAEKJOON' 카테고리의 다른 글
[백준] 14500 테트로미노 (Java) (1) | 2022.03.30 |
---|---|
[백준] 11727 2xn 타일링2 (Java) (0) | 2022.03.25 |
[백준] 1647 도시 분할 계획 (Java) (0) | 2022.03.10 |
[백준] 1197 최소 스패닝 트리 (Java) (0) | 2022.03.10 |
[백준] 1202 유기농 배추 (Java) (0) | 2022.03.03 |
댓글