728x90
 

11726번: 2×n 타일링

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

www.acmicpc.net

동적 계획법으로 풀었다.

규칙이 있다.

2 x n을 채우는 방법의 수 = 2 x (n - 1)을 채우는 방법의 수 + 2 x (n - 2)를 채우는 방법의 수이다.

int의 범위를 벗어날 수 있으니 애초에 저장할 때 10007로 나눈 나머지를 저장해주었다.

#include <iostream>
using namespace std;

int main() {
	int n;
	cin >> n;
	int* arr = new int[n];
	arr[0] = 1;
	arr[1] = 2;
	for (int i = 2; i < n; i++) {
		arr[i] = (arr[i - 1] + arr[i - 2]) % 10007;
	}
	cout << arr[n - 1];
	return 0;
}
728x90

'알고리즘 문제' 카테고리의 다른 글

[백준] 1085번 직사각형에서 탈출  (0) 2020.02.02
[백준] 10250번 ACM 호텔  (0) 2020.02.01
[백준] 10844번 쉬운 계단 수  (0) 2020.01.31
[백준] 2292번 벌집  (0) 2020.01.31
[백준] 2193번 이친수  (0) 2020.01.31

+ Recent posts