(11726) 2*n 거리

문제

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

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

입력

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

출력

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


문제 풀이

해당 문제는 DP 알고리즘으로 해결 할 수 있는 문제이다. 길이가 1인 타일을 채우는 방법은 1가지, 길이가 2인 타일을 채우는 방법은 2가지, 길이가 3인 타일을 채우는 방법은 3가지로 i = (i -1) + (i - 2) 이라는 규칙이 생긴다. 이것을 코드로 적어내면 되는 문제이다.

 


나의 답안

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] dp = new int[n+1];
        dp[0] = 1;
        dp[1] = 1;
        for(int i=2; i<=n; i++) {
            dp[i] = (dp[i-1] + dp[i-2]) % 10007;
        }
        System.out.println(dp[n]);
    }
}

'BackJoon > Algorithm' 카테고리의 다른 글

(14002) 가장 긴 증가하는 부분 수열 4  (1) 2023.04.22
(2579) 계단 오르기  (0) 2023.04.21
(1240) 노드사이의 거리  (0) 2023.04.19
(15681) 트리와 쿼리  (0) 2023.04.19
(4803) 트리  (0) 2023.04.19