Skip to main content

백준 11726 2xn 타일링

·108 words·1 min· loading

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

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

원리만 알면 구현하기 매우 쉽다.

맨 처음 손으로 써보았다.

간단하게 n[i]=n[i-1]+n[i-2] 의 점화식 즉 피보나치 수열이 나온다.

중요한건 왜 그런가이다

!!!!!!!!!!!!!

n[4]를 예로 들겠다.

n[4]를 만드는 방법은

n[3]의 모든 경우의 수에서 2*1블럭 1개를 가장 오른쪽에 채우는 방법과,

n[2]의 모든 경우의 수에스 12블럭 2개(22)를 채우는 방법이 있다.

즉 n[3]과 n[2]의 합이된다.

구현자체는 매우 쉬운데 이해하기가 어렵다. 아직도 헷갈린다.

%% 오른쪽에만 채우는게아니라 가운데, 첫번째에 채울 수도 있지 않나 라고 생각했는데

오른쪽에 채우는게 아니면 이미 그 전의 경우의 수에 들어있게 된다 %%

n=int(input())a,b=0,1cnt=1while cnt<=n:    a,b=b,a+b    cnt+=1print(b%10007)