새벽코딩

[백준] [11726] 2 x n 타일링 (JAVA) (dp) 본문

알고리즘

[백준] [11726] 2 x n 타일링 (JAVA) (dp)

J 코딩 2023. 10. 11. 16:50
반응형

https://www.acmicpc.net/problem/11726

 

11726번: 2×n 타일링

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

www.acmicpc.net


 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 256 MB 155071 59774 44279 36.469%

문제

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.

아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

입력

첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)

출력

첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.


※ JAVA 코드 (2 x n 타일링)

import java.io.*;
import java.util.*;

public class Main {
    public static int N;
    public static int[] dp;

    public static void main(String [] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());

        dp = new int[1001];
        dp[1] = 1;
        dp[2] = 2;
        dp[3] = 3;

        for(int i = 4; i <= N; i++){
            dp[i] = (dp[i-2] % 10007 + dp[i-1] % 10007) % 10007;
        }
        System.out.println(dp[N]);
    }
}

※ 생각정리 (2 x n 타일링)

1. n이 1인 경우

 
 

 

2. n이 2인 경우

   
   

 

   
   

 

3. n이 3인 경우

 
 

 

   
   

 

   
   

 

혹시 패턴이 보인다면 dp를 풀기위한 충분한 준비가 되어있는 것입니다.

dp[n] = dp[n - 2] + dp[n - 1]

 

 

- 새벽코딩 -

반응형
Comments