안녕하세요. 이번에는 백준 11726 2*n 타일링 문제를 풀어보려고 합니다.
https://www.acmicpc.net/problem/11726
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
Problem
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
Solution
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] dp = new int[1001];
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
for(int i = 3; i <= n; i++) {
dp[i] = (dp[i - 2] + dp[i - 1]) % 10007;
}
System.out.println(dp[n]);
}
}
이번 문제는 DP(다이나믹 프로그래밍)을 활용해서 풀 수 있는 문제이다.
이렇게 타일을 배치할 수 있다. 그럼 우리는 이 그림을 통해서 DP의 점화식을 구할 수 있다.
점화식 : dp[n] = dp[n - 2] + dp[n - 1]
1. 점화식 : dp[n] = dp[n - 2] + dp[n - 1]의 코드
int[] dp = new int[1001];
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
for(int i = 3; i <= n; i++) {
dp[i] = (dp[i - 2] + dp[i - 1]) % 10007;
}
Performance
반응형
'백준 Algorithm > 백준 CLASS3' 카테고리의 다른 글
[백준] CLASS3 18870 좌표 압축 - JAVA [자바] (0) | 2023.11.05 |
---|---|
[백준] CLASS3 14940 쉬운 최단거리 - JAVA [자바] (0) | 2023.11.04 |
[백준] CLASS3 11724 연결 요소의 개수 - JAVA [자바] (0) | 2023.11.02 |
[백준] CLASS3 11723 집합 - JAVA [자바] (0) | 2023.11.01 |
[백준] CLASS3 11659 구간 합 구하기4 - JAVA [자바] (0) | 2023.10.31 |