Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 그리디
- 딥러닝
- 영상처리
- BFS
- 포스코 교육
- DP
- 삼성코딩테스트
- tflite
- 삼성코테
- tinyml
- 코테 문제
- 알고리즘
- dfs문제
- 포스코 ai 교육
- 포스코 AI교육
- sort
- 코딩테스트
- 삼성역테
- 다이나믹프로그래밍
- DP문제
- bfs문제
- 초소형머신러닝
- 코테
- dfs
- 삼성역량테스트
- TensorFlow Lite
- 컴퓨팅사고
- 자료구조
- MCU 딥러닝
- 임베디드 딥러닝
Archives
- Today
- Total
코딩뚠뚠
[백준문제풀이] 11727 2xn 타일링 2 본문
반응형
풀이일시 : 2020-08-09
문제 :
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
입력:
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력:
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
풀이 :
점화식을 만들어보자
가장 마지막에 오는 타일을 생각해봤을 때 가능 한 경우의 수를 생각해본다면
1. 1x2 타일 (그 앞엔 N-1개)
2. 2x1 타일 (그 앞엔 N-2개)
3. 2x2 타일 (그 앞엔 N-2개)
점화식 D[i]=D[i-1]+2*D[i-2] 를 도출해 낼 수 있다.
DP에 대한 포스팅이다. 점화식을 쓰는것은 이 알고리즘을 사용한것이다.
dbstndi6316.tistory.com/35?category=953970
#include <iostream>
using namespace std;
int d[1001];
int dp(int x) {
if (x == 1) return 1;
if (x == 2) return 3; //3가지 경우의 수
if (d[x] != 0) return d[x];
return d[x] = (dp(x - 1) + 2 * dp(x - 2)) % 10007; //N-2개가 남는 상황이 두개가있음
}
int main() {
int x;
cin >> x;
printf("%d", dp(x));
}
반응형
'알고리즘 문제풀이 > 백준문제풀이' 카테고리의 다른 글
[백준문제풀이] 15852 타일 채우기 3 (0) | 2020.12.29 |
---|---|
[백준문제풀이] 2133 타일 채우기 (0) | 2020.12.29 |
[백준문제풀이] 11726 2xn 타일링 (0) | 2020.12.29 |
[백준문제풀이] 10989 수 정렬하기 3 (0) | 2020.12.29 |
[백준문제풀이] 1431 시리얼번호 (0) | 2020.12.29 |