티스토리 뷰
반응형
백준 2*n 타일링
본문보기
dp문제. 경우의 수 문제이며, 점화식을 구하는 문제이다. 이 문제의 형식은 다음 문제와 유사하다.
n 길이의 비트스트링 문자열의 경우의 수를 구하여라. 단 0이 두개 이상 연속하면 안된다.
우선 n길이의 비트스트링 문자열 경우의 수는 2^n 이다. 그런데 0이 연속되면안된단다. 확실히 2^n보다 작을것 같지만 경우의 수가 몇개인지 모른다.
여기서 접근법은 이전 문제(1로만들기)처럼 차근차근 접근하는 것이다. 문자열 3일 때의 경우의 수를 생각해보자.
문자열 3일때의 경우의수는 3번째 수가 1인경우와 3번째 수가 0인경우로 표현할 수 있다. 3번째 수가 0일때에는 반드시 2번째 수는 1이 되어야한다.
그리고 물음표인 곳은 반드시 건전한 비트스트링(연속해서 0이 나오지 않는 비트스트링)이 들어와야한다.
an 이 n 길이의 건전한 비트스트링의 경우의 수 라고 하자. 이 때 우리는 3번째 길이는 a(2) + a(1) 임 을 알 수 있다.
사담이 본문보다 길었지만, 같은 맥락이였다.
n 길이의 블록을 만들기 위해선 다음과 같은 경우로 나뉜다. n 길이의 나무 블록을 만들기 위해서는 n 번째 나무 블록이 n-1길이에서 세로로 긴것으로 완성되거나 n-2 길이에서 가로로 긴것 두개를 쌓음으로 완성됨을 알 수 있다.
따라서 점화식은 다음과 같다. a[n] = a[n-1] + a[n-2]
물론 이 점화식은 3부터 차근차근 쌓아 올라가야 건전한 점화식이라 할 수 있다.
* 경우의 수(dp) 문제는 항상 굉장히 큰수가 따라오며, mod 연산이 나오기 때문에 주의하는 것이 좋다.
소스보기
반응형
'알고리즘 문제 > DP' 카테고리의 다른 글
백준1126 같은탑 (0) | 2017.12.05 |
---|---|
BOJ 1520 : 내리막길 (0) | 2017.11.11 |
백준 9095 : 1, 2, 3 더하기 (0) | 2017.10.10 |
백준 11727: 2*n 타일링2 (0) | 2017.10.09 |
백준 1463 : 1로 만들기 (2) | 2017.10.09 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- beginning javascript
- paul wilton
- Propositional and Predicate Logic
- 아레나
- 명제논리
- 항해99
- 자바스크립트 예제
- javascript
- 그라파나
- 이산 수학
- 대규모 시스템 설계 기초
- 이산수학
- Grafana
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- arena simulation
- Simulation
- flutter
- 자바스크립트
- 데이터 중심 애플리케이션 설계
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 아레나 시뮬레이션
- 로젠
- 최단경로 알고리즘
- 백준
- Discrete Mathematics
- Arena
- grafana cloud
- rosen
- 아레나시뮬레이션
- 시뮬레이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함