https://www.acmicpc.net/problem/11727
11727번: 2×n 타일링 2
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다.
www.acmicpc.net
1. 풀이
[백준 11726 2xn 타일링] 와 거의 똑같은 문제이다.
하지만 조건에서 2x2의 타일도 가능하다했으므로
점화식을 세워보면 D[n] = D[n-1] + D[n-2] + D[n-2]가 나오는 것을 볼 수 있다.
2. 코드
import java.util.*;
public class Main {
static int[] memo = new int[1001];
static int tile2(int n){
if(memo[n] > 0)
return memo[n];
memo[n] = (tile2(n-1) + 2*tile2(n-2))%10007;
return memo[n];
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
memo[1] = 1;
memo[2] = 3;
int n = sc.nextInt();
System.out.println(tile2(n));
sc.close();
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준 16194] 카드 구매하기 2 - 자바 (0) | 2020.05.02 |
---|---|
[백준 11052] 카드 구매하기 - 자바 (0) | 2020.05.02 |
[백준 17103] 골드바흐 파티션 - 자바 (0) | 2020.05.01 |
[백준 17087] 숨바꼭질 6 - 자바 (0) | 2020.04.30 |
[백준 9613] GCD 합 - 자바 (0) | 2020.04.30 |
댓글