https://www.acmicpc.net/problem/11726
문제
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
코드 구현
코-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | import java.util.*; import java.lang.*; import java.io.*; public class Main { static int[] d; public static void main(String[] args) { // TODO Auto-generated method stub // your code goes here //정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. /*2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. */ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); //d[n] = d[n-1] + d[n-2]; d = new int[n+1]; System.out.println(go(n)); } public static final int go(int n){ if ( n == 0 ) { d[n] = 1; return d[n]; } if ( n == 1 ) { d[n] = 1; return d[n]; } if ( d[n]>0 ) return d[n]; d[n] = (go(n-1) + go(n-2))%10007; return d[n]; } } | cs |
'알고리즘 문제 (백준저지) > DP' 카테고리의 다른 글
[백준/11057] 오르막 수 (Java/코드) (0) | 2018.11.20 |
---|---|
[백준/10844] 쉬운 계단 수 (Java/코드) (0) | 2018.11.20 |
[백준/2193] 이친수 (Java/코드) (0) | 2018.11.20 |
[백준/-] 붕어빵 판매하기 (0) | 2018.11.20 |
[백준/9095] 1, 2, 3 더하기 (Java/코드) (0) | 2018.11.20 |