백준 알고리즘 기초 1/DP 1

[백준] 11726 : 2×n 타일링

STUDYING,,, 2021. 10. 4. 00:35

알고리즘 기초 1 / 2

DAY - 4

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

 

11726번: 2×n 타일링

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

www.acmicpc.net

문제

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

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


매일 BFS, DFS 처럼 그래프 탐색문제를 풀다가 DP를 푸니까 머리가 돌아가지 않았따,, DP에는 하향식, 상향식이 있는데 아직 상향식이 더 편하게 느껴져 상향식으로 문제를 풀어보았다. DP 문제들을 점차 풀어가면서 점화식을 만드는 능력을 길러야겠따,,,

package day1003;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Baekjoon_11726_2곱하기N타일링 {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		
		int[] arr = new int[N+2];
		arr[1] = 1;
		arr[2] = 2;
		
		for (int i = 3; i <= N; i++) {
			arr[i] = (arr[i-1]+arr[i-2])%10007;
		}
		System.out.println(arr[N]%10007);
	}
}