11727 : 2xn 타일링 2
문제
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×17 직사각형을 채운 한가지 예이다.
입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
문제 풀이
- 풀어버림.....사실 2xn 첫번째 문제 덕분에 푼 듯..?
- 점화식 > dp[n-1] + dp[n-2] * 2
- dp[n-1]은 경우가 하나뿐임 그냥 세로타일 채우기
- dp[n-2]는 정사각형, 세로두개, 가로두개 이렇게 경우가 3개인데 세로 두개는 dp[n-1]에서 들어가니께 뺀다!
실행 코드
import java.util.Scanner;
public class P11727 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long[] dp = new long[1001];
dp[1] = 1;dp[2] = 3; dp[3] = 5;
for(int i = 4; i <= n; i++) {
dp[i] = (dp[i-2] * 2 + dp[i-1]) % 10007;
}
System.out.println(dp[n]);
}
}
12시 넘어서 올릴까.....
'[ STUDY ] > CodingTest' 카테고리의 다른 글
백준 1927 : 최소 힙 (3) | 2024.11.26 |
---|---|
백준 1260 : DFS와 BFS(오늘의 교훈 : 문제를 잘 읽자) (2) | 2024.11.25 |
백준 9095 : 1, 2, 3 더하기(DP) (0) | 2024.11.23 |
백준 2579 : 계단 오르기(DP) (0) | 2024.11.22 |
[ 런타임에러 ] /by zero (0) | 2024.11.18 |