끄적끄적
백준 11726 [2×n 타일링] -dp 본문
출처 : https://www.acmicpc.net/problem/11726
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
시간 제한메모리 제한제출정답맞은 사람정답 비율
1 초 | 256 MB | 90610 | 33963 | 24760 | 35.232% |
문제
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
예제 입력 1
2
예제 출력 1
2
예제 입력 2
9
예제 출력 2
55
출처
- 문제를 만든 사람: baekjoon
알고리즘 분류
n일 때 나올 수 있는 경우의 수는 n-1일때와 n-2일 때를 더한 값과 같다.
그래서 적용해보면 dp[0]=1, dp[1]=2, dp[2]=3, dp[3]=5 이렇게 나와야한다.
근데 dp[3](그니까 4일 때)이 왜 5가 나오는지 잘 이해가 안되었는데,
(4이면 1과3, 2와2로 나뉘니까 1과3은 3일 때 경우의 수를 적용하는게 이해가 되었는데, 2와2일때는 왜 2의 경우의수가 적용되는지 잘 몰랐었다. 2와 2일 때는 2의 경우의 수의 2배가 되어야하지 않나 싶었다.)
근데 직접 따져보니 겹치는 경우가 존재하여 결국 5가지가 나오는 것을 볼 수 있었다.
따라서 dp[n]=dp[n-1]+dp[n-2]가 적용되게 된다.
'코테준비' 카테고리의 다른 글
프로그래머스 level 3 [징검다리 건너기] (0) | 2021.10.01 |
---|---|
백준 11727 [2xn 타일링 2] -dp (0) | 2021.09.27 |
백준 2206 [벽 부수고 이동하기] -BFS (0) | 2021.09.23 |
백준 2579 [계단 오르기] - DP (0) | 2021.09.23 |
백준 [15683] 감시 - 완전탐색 (0) | 2021.09.18 |