minimimi

[백준] 11727 2 x n 타일링 2 본문

프로그래밍 공부/알고리즘

[백준] 11727 2 x n 타일링 2

99mini 2019. 7. 30. 10:41
반응형

문제링크] https://www.acmicpc.net/problem/11727

 

11727번: 2×n 타일링 2

첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.

www.acmicpc.net


문제요약

2×n 직사각형을 2×1과 2×2 타일로 채우는 방법의 수를 구하는 문제입니다.

 

백준 11726 문제와 마찬가지로 다이나믹 프로그래밍을 이용한 알고리즘 문제이다. 

2019/07/30 - [컴퓨터/알고리즘] - [백준] 11726 2 x n 타일링

 

[백준] 11726 2 x n 타일링

문제링크] https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×..

zero-rabbit.tistory.com

풀이

가로 길이가 1만큼 늘어날 때 타일을 채울 수 있는 경우의 수는 한 가지이다.

가로 길이가 2만큼 늘어날 때 타일을 채울 수 있는 경우의 수는 두 가지이다.

 

따라서 점화식은 

D[n] = D[n-1] + 2D[n-2]

이라고 세울 수 있다.

 

코드는 c/c++로 작성하였습니다.

#include <stdio.h>

int arr[1001];

int dp(int x) {
	if (x == 1) return 1;
	if (x == 2) return 3;
	if(arr[x]!=0) return arr[x];
	return (arr[x] = (2*dp(x - 2) + dp(x - 1))%10007);
	
}
int main() {

	int num;
	scanf("%d", &num);
	printf("%d", dp(num));

	return 0;
}

 

반응형

'프로그래밍 공부 > 알고리즘' 카테고리의 다른 글

[백준] 10773 제로  (0) 2019.08.06
[백준] 2902 KMP는 왜 KMP일까?  (0) 2019.07.31
[백준] 2798 블랙잭  (0) 2019.07.30
[백준] 2231 분해합  (0) 2019.07.30
[백준] 11726 2 x n 타일링  (0) 2019.07.30