๋ฐ์ํ
https://www.acmicpc.net/problem/11726
๋ฌธ์
2×n ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ 1×2, 2×1 ํ์ผ๋ก ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ ๊ทธ๋ฆผ์ 2×5 ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ ์ฑ์ด ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ n์ด ์ฃผ์ด์ง๋ค. (1 ≤ n ≤ 1,000)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ 2×n ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ 10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
2*n ์ ์ฑ์ฐ๋ ๊ฒฝ์ฐ์ ์๋
1. 2*(n-1)์ ์ฑ์ฐ๊ณ ์ธ๋ก ์ง์ฌ๊ฐํ(2*1) ๋ผ์ฐ๊ธฐ
2. 2*(n-2)๋ฅผ ์ฑ์ฐ๊ณ ๊ฐ๋ก ์ง์ฌ๊ฐํ(1*2) ๋๊ฐ ๋ผ์ฐ๊ธฐ
๋์ ๊ณํ๋ฒ์ผ๋ก ํ์ด ๊ฐ๋ฅํ๋ค
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int MAX_N = 1000 + 1;
const int MOD = 10007;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
vector<int> dp(MAX_N);
dp[1] = 1;
dp[2] = 2;
for(int i=3; i<MAX_N; i++)
dp[i] = (dp[i-2] + dp[i-1])%MOD;
int n;
cin >> n;
cout << dp[n];
return 0;
}
๋ฐ์ํ
'๐ BOJ > Class 3' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 1764๋ฒ: ๋ฃ๋ณด์ก (0) | 2023.03.24 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 11724๋ฒ: ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2023.03.01 |
[BOJ][C++] ๋ฐฑ์ค 2606๋ฒ: ๋ฐ์ด๋ฌ์ค (0) | 2023.02.13 |
[BOJ][C++] ๋ฐฑ์ค 1003๋ฒ: ํผ๋ณด๋์น ํจ์ (0) | 2023.02.13 |
[BOJ][C++] ๋ฐฑ์ค 9095๋ฒ: 1,2,3 ๋ํ๊ธฐ (0) | 2023.02.08 |