백준/DP 다이나믹 프로그래밍
11726 2xn 타일링
have a good time
2021. 10. 21. 21:49
https://www.acmicpc.net/problem/11726
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
풀이 : dp[n] = dp[n-1]+dp[n-2]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static int dp [];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
dp = new int[1001];
for(int i=0;i<1001;i++) {
dp[i]=-1;
}
System.out.println(Tile(N));
}
public static int Tile(int N) {
dp[0]=0;
dp[1]=1;
dp[2]=2;
if(dp[N]==-1) {
dp[N] =(Tile(N-1) + Tile(N-2))%10007;
}
return dp[N];
}}
dp 배열을 1001 의 크기만큼 만든 이유는 입력값의 범위가
1이상 1,000이하 이기 때문이다.
dp[0]은 실질적으로 사용하지 않고
dp[1]~dp[1,000] 사용한다.
dp 문제를 많이 안 풀어봐서 참고해서 풀었다.
참고 자료 :
https://st-lab.tistory.com/125?category=868019
[백준] 1904번 : 01타일 - JAVA [자바]
www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이
st-lab.tistory.com