-
11726 2xn 타일링백준/DP 다이나믹 프로그래밍 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
'백준 > DP 다이나믹 프로그래밍' 카테고리의 다른 글
11048 이동하기 (0) 2022.05.17 가장 긴 증가하는 부분 수열 11053 (0) 2022.02.08 11057 오르막 수 (0) 2021.10.26 9465 스티커 (0) 2021.10.23 11052 카드 구매하기 (0) 2021.10.23