티스토리 뷰
반응형
백준 2133 타일채우기
해설
흥미로운 문제이다. 정답을 미리 알거나 스포일링 당하는건 괴롭지만, ... 생각해나갈 때는 알쏭달쏭한 즐거운 문제였을 것이다.(구현문제보단 재밌는듯)
가로 길이 2 인 것을 만드는 경우의 수는 3가지이다. ( ||_ ),( _|| ), ( _ _ _ )이다.
임의의 길이 i를 만드는 데에는 i-2 길이를 만드는 경우의 수에 3가지 경우의 수를 조합하는 것이므로, f(i) = f(i-2)*2
이다.
그리고, 길이 4 이상부터 다음과 같은 형태를 만들 수 있다.
이러한 형태는 4, 6, 8, ... i 길이 만큼 만들 수 있고, 뒤집은 형태도 있기 때문에 각 길이마다 2가지의 경우의 수가 있다.
이를 종합하면 i를 만드는 경우의 수는 다음과 같다.f(i) = f(i-2)*2 + f(j)*2, where j= i-4, i-6, ... 0.
````C++
#include
using namespace std;
int d[31];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
d[0]=1;
d[2] = 3;
for (int i=4; i<=30 ; i+=2)
{
d[i] = 3*d[i-2];
for (int j=i-4; j>=0; j-=2)
{
d[i] += d[j]*2;
}
}
int n;
cin >> n;
cout << d[n] << "\n";
} `
반응형
'알고리즘 문제 > DP' 카테고리의 다른 글
백준 14494 다이나믹이 뭐에요? (0) | 2019.09.17 |
---|---|
백준 1463 1로 만들기 (0) | 2019.09.17 |
백준 15483 최소편집 (0) | 2018.12.30 |
백준 15991 1, 2, 3 더하기 - 6 (0) | 2018.10.23 |
백준1126 같은탑 (0) | 2017.12.05 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Arena
- 자바스크립트
- 시뮬레이션
- rosen
- Discrete Mathematics
- 명제논리
- 로젠
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- 아레나
- javascript
- 이산 수학
- paul wilton
- 자바스크립트 예제
- arena simulation
- grafana cloud
- 이산수학
- 항해99
- flutter
- 그라파나
- 대규모 시스템 설계 기초
- Simulation
- 아레나시뮬레이션
- beginning javascript
- 데이터 중심 애플리케이션 설계
- Grafana
- 아레나 시뮬레이션
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 백준
- Propositional and Predicate Logic
- 최단경로 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함