Problem Solving/Baekjoon

[백준 / BOJ] 1904 01타일

msmn 2021. 3. 19. 15:03
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