본문 바로가기

Algorithm/Dynamic Programming

Baekjoon 1904 01타일

Link https://www.acmicpc.net/problem/1904

소스결과 5892 KB / 8 ms

출처 Baekjoon

언어 C++ 17

분류 다이나믹 프로그래밍

 

설명

00 또는 1 로만 구성된 길이가 N인 2진 수열의 개수를 구하자

 

N이 5일 때 까지의 결과값들은 1, 2, 3, 5, 8 이다.

피보나치 수열이다.

 

알고리즘

1. n을 입력 받는다.

2. 1 ~ 100만까지의 피보나치 수열을 구한다. 각각의 값은 15746으로 나눈 나머지로 구한다.

3. n번째에 있는 값을 출력해준다.

 

소스코드

#include <iostream>

using namespace std;

const int MAX = 1000000;
const int DIV = 15746;

int dp[MAX] = { 1, 2, };

int main()
{
	for (int i = 2; i < MAX; i++)
		dp[i] = (dp[i - 1] + dp[i - 2]) % DIV;

	int n;

	cin >> n;

	cout << dp[n-1];

	return 0;
}

'Algorithm > Dynamic Programming' 카테고리의 다른 글

Baekjoon 5569 출근경로  (0) 2019.08.19
Baekjoon 1964 오각형, 오각형, 오각형...  (0) 2019.04.01
BaekJoon 2752 보드게임  (0) 2019.01.31
BaekJoon 1912 연속합  (0) 2019.01.14
BaekJoon 11726 2xn 타일링  (0) 2019.01.14