728x90
알고리즘 분류: DP
문제 링크: www.acmicpc.net/problem/1904
1904번: 01타일
지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이
www.acmicpc.net
- DP[i]: 길이가 i인 모든 2진 수열의 개수라고 정의한다.
- 주어진 조건대로 나열해보면 DP[i] = DP[i-2] + DP[i-1]이라는 점화식을 도출해낼 수 있다.
- DP[i-1]의 개수(1 하나가 붙은 경우) + DP[i-2]의 개수(00 붙은 경우)이기 때문이다.
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <iostream>
#include <climits>
#include <cstring>
#include <iomanip>
#include <bitset>
#include <string>
#include <vector>
#include <cmath>
#include <deque>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
#define ll long long
#define INF 1e9
using namespace std;
//https://www.acmicpc.net/problem/1904 01타일
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
int dp[1000001] = {0, 1, 2};
for(int i=3; i<=n; i++) {
dp[i] = dp[i-1] + dp[i-2];
dp[i] %= 15746;
}
cout << dp[n];
return 0;
}
728x90
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준 / BOJ] 3425 고스택 (0) | 2021.07.08 |
---|---|
[백준 / BOJ] 2352 반도체 설계 (0) | 2021.03.28 |
[백준 / BOJ] 9663 N-Queen (0) | 2021.03.18 |
[백준 / BOJ] 1629 곱셈 (0) | 2021.03.18 |
[백준 / BOJ] 1753 최단경로 (0) | 2021.03.17 |