[문제 위치]
https://www.acmicpc.net/problem/15624
[문제 풀이]
이 문제는 DP를 활용한 피보나치 문제이다.
숫자가 매우 커질 수 있으므로 모듈러를 만들어 나누어주어가며 계산해주면 되는 문제이다.
점화식 자체는 피보나치 수열이므로 별다른 특별할 것이 없다.
아래는 이를 코드로 구현한 것이다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define FASTIO ios::sync_with_stdio(false); cin.tie(nullptr);
const int MOD = 1000000007;
int main() {
FASTIO
int N;
cin >> N;
vector<int> DP(N+1, 0);
if (N >= 1) DP[1] = 1;
for (int i = 2; i <= N; i++) {
DP[i] = (DP[i - 1] + DP[i - 2]) % MOD;
}
cout << DP[N];
return 0;
}'문제 풀이 > 문제 풀이(BOJ)' 카테고리의 다른 글
| [Silver V] 상자 만들기 - 7482 (0) | 2026.01.26 |
|---|---|
| [Silver V] 정말 좋은 압축 - 5043 (0) | 2026.01.25 |
| [Gold IV] 가희와 비행기 - 22236 (1) | 2026.01.20 |
| [Gold IV] 주사위 게임 - 13250 (0) | 2026.01.19 |
| [Gold IV] 저금통 - 2421 (0) | 2026.01.15 |