Algorithm Study

[BOJ] 11726번: 2*n 타일링

hyun-1200 2022. 5. 4. 12:50

(실버3)

 

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

 

11726번: 2×n 타일링

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

www.acmicpc.net

 

 

d[3] 은 d[2]의 결과값에 2*1 타일을 붙이면 되고, d[1]의 결과값에 1*2 타일을 붙이면 된다.

 -> 즉, d[3]의 값은 d[2]+ d[1] 값이다. 

 -> d[n]= d[n-2] + d[n-2] 

 

다만, 여기서 주의할 점.

모든값을 정해놓고 마지막에 10007을 나누게 되면 오버플로우가 나므로,

d[i] = d[i]%10007 을 바로 해주어야 한다는 것.

 

또한, int d[] = new int[N+1]로 할 때의 문제점 

만약 N=1 이라는 값을 입력받게 되면  d[2]가 index 범위를 벗어나므로 ( ArrayIndexOutOfBounds)  와 같은 런타임 에러가 날 수 있다.