본문 바로가기
백준 문제 풀이 & C++ 공부

백준 1940 C++

by daisy0461 2025. 3. 27.
#include <bits/stdc++.h>

using namespace std;

int n;	//<=1000000
int dp[1000010];

int go(int num)
{
	if (num == 1) return 1;
	if (num == 2) return 2;

	if (dp[num] != 0) return dp[num];

	int& result = dp[num];

	//이 식이 나오는 이유
	//n-1에 있는 수 제일 뒤에 1을 추가하는 경우의 수와 n-2에 00을 추가하는 경우의 수가 총 n의 경우의 수와 동일하다.
	return result = (go(num-1) + go(num-2)) % 15746;
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	cin >> n;

	cout << go(n);
}

간단하게 생각할 수 있는 문제였다.

'백준 문제 풀이 & C++ 공부' 카테고리의 다른 글

백준 1932 C++  (0) 2025.03.27
백준 1149 C++  (0) 2025.03.27
백준 11066 C++  (0) 2025.03.26
백준 11049 C++  (0) 2025.03.26
백준 15468 C++  (0) 2025.03.15