티스토리 뷰
반응형
백준 2133번 타일 채우기
https://www.acmicpc.net/problem/2133
정답 코드
#include<stdio.h>
int find(int a);
int dp[31];
int main() {
int n;
scanf("%d", &n);
printf("%d", find(n));
}
int find(int a)
{
if(a==0)
return 1;
if(a==1)
return 0;
if(a==2)
return 3;
if (dp[a] != 0)
return dp[a];
dp[a] = 3 * find(a - 2);
for (int x = 4; x <= a;x++)
{
if (x % 2 == 0)
{
dp[a]+= 2 * find(a - x);
}
}
return dp[a];
}
문제 풀이
dp를 이용하는 문제이면서, 수학적인 사고력을 요구하는 문제입니다. 주어진 숫자들의 예시를 보면서 공식을 찾아야 합니다.
1)3가지 패턴이 이전 칸인 6칸 경우에 채워들어가므로 6칸 경우 * 3만큼 채워집니다. + (41 * 3)
2) 4칸에서 발생한 족보없는 패턴 2가지가 4칸 경우 * 2만큼 채워집니다. + (11 * 2)
3) 6칸에서 발생한 족보없는 패턴 2가지가 2칸 경우 * 2만큼 채워집니다. + (3 * 2)
4) 8칸에서도 족보없는 패턴이 2가지가 나오므로 +2를 해줍니다.
반응형
'Algorithm > BOJ' 카테고리의 다른 글
백준 2164번 C++ (0) | 2023.08.04 |
---|---|
백준 2161번 C++ (0) | 2023.08.04 |
백준 2108번 C++ (0) | 2023.08.04 |
백준 2003번 C++ (0) | 2023.08.04 |
백준 1991번 C++ (0) | 2023.08.04 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- C++
- js
- 카운팅 정렬
- 자바스크립트
- Do it!
- 이분 매칭
- 에라토스테네스의 체
- java
- 우선순위 큐
- CSS
- 스프링 부트 crud 게시판 구현
- c++ string
- 유클리드 호제법
- DP
- 알고리즘
- html
- BFS
- 자료구조
- 투 포인터
- 자바
- HTML5
- 반복문
- 유니온 파인드
- 백준
- 세그먼트 트리
- C++ Stack
- 알고리즘 공부
- DFS
- 백준 풀이
- 스택
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함