[백준, BOJ 11727] 2xn 타일링 2 (java)
Problem Solving/BOJ

[백준, BOJ 11727] 2xn 타일링 2 (java)

728x90

출처-https://www.acmicpc.net/problem/11727

 

11727번: 2×n 타일링 2

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

www.acmicpc.net


728x90

 

내가 푼 방식

: '11726' 번과 동일한 방식으로 풀었다.

 다만 (1x2 타일이 위아래로 붙어있는 모양, 2x2 타일 하나) 이 두 가지가 결과적으론 2x2 모양의 타일로 보이므로

 '11726' 번에서  dp[i]=dp[i-1]+dp[i-2]*2 로 구현해주었다.

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner scan=new Scanner(System.in);
		int n=scan.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]*2;
			dp[i]%=10007; //int타입의 데이터 범위가 벗어나는 것을 방지
		}
		System.out.println(dp[n]);
	}

}
728x90