티스토리 뷰

1. 문제

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

 

11727번: 2×n 타일링 2

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

www.acmicpc.net

 

2. 설명

하나씩 해보면서 규칙찾아서 풀었다.

짝수일 때는 그 전의 dp 2배에 +1을 해주어야 했고,

홀수일 때는 전의 dp 2배에 -1을 해주어야 했다.

규칙만 찾으면 쉽게 풀 수 있는 문제

 

3. 코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int[] dp = new int[1001];
		int mod = 10007;
		
		dp[1] = 1;
		for(int i=2; i<=n; i++) {
			if(i%2==0) // 짝수면 +1
				dp[i] = (dp[i-1] * 2 + 1) % mod;
			else // 홀수면 -1
				dp[i] = (dp[i-1] * 2 - 1) % mod;
		}
		
		System.out.println(dp[n]);
	}
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday