https://www.acmicpc.net/problem/1904
๋ฌธ์
์ง์์ด์๊ฒ 2์ง ์์ด์ ๊ฐ๋ฅด์ณ ์ฃผ๊ธฐ ์ํด, ์ง์์ด ์๋ฒ์ง๋ ๊ทธ์๊ฒ ํ์ผ๋ค์ ์ ๋ฌผํด์ฃผ์ จ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ฐ๊ฐ์ ํ์ผ๋ค์ 0 ๋๋ 1์ด ์ฐ์ฌ ์๋ ๋ฑ์ฅ์ ํ์ผ๋ค์ด๋ค.
์ด๋ ๋ ์ง๊ถ์ ๋์ฃผ๊ฐ ์ง์์ด์ ๊ณต๋ถ๋ฅผ ๋ฐฉํดํ๊ธฐ ์ํด 0์ด ์ฐ์ฌ์ง ๋ฑ์ฅ์ ํ์ผ๋ค์ ๋ถ์ฌ์ ํ ์์ผ๋ก ์ด๋ฃจ์ด์ง 00 ํ์ผ๋ค์ ๋ง๋ค์๋ค. ๊ฒฐ๊ตญ ํ์ฌ 1 ํ๋๋ง์ผ๋ก ์ด๋ฃจ์ด์ง ํ์ผ ๋๋ 0ํ์ผ์ ๋ ๊ฐ ๋ถ์ธ ํ ์์ 00ํ์ผ๋ค๋ง์ด ๋จ๊ฒ ๋์๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ง์์ด๋ ํ์ผ๋ก ๋ ์ด์ ํฌ๊ธฐ๊ฐ N์ธ ๋ชจ๋ 2์ง ์์ด์ ๋ง๋ค ์ ์๊ฒ ๋์๋ค. ์๋ฅผ ๋ค์ด, N=1์ผ ๋ 1๋ง ๋ง๋ค ์ ์๊ณ , N=2์ผ ๋๋ 00, 11์ ๋ง๋ค ์ ์๋ค. (01, 10์ ๋ง๋ค ์ ์๊ฒ ๋์๋ค.) ๋ํ N=4์ผ ๋๋ 0011, 0000, 1001, 1100, 1111 ๋ฑ ์ด 5๊ฐ์ 2์ง ์์ด์ ๋ง๋ค ์ ์๋ค.
์ฐ๋ฆฌ์ ๋ชฉํ๋ N์ด ์ฃผ์ด์ก์ ๋ ์ง์์ด๊ฐ ๋ง๋ค ์ ์๋ ๋ชจ๋ ๊ฐ์ง์๋ฅผ ์ธ๋ ๊ฒ์ด๋ค. ๋จ ํ์ผ๋ค์ ๋ฌดํํ ๋ง์ ๊ฒ์ผ๋ก ๊ฐ์ ํ์.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์์ฐ์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000,000)
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์ง์์ด๊ฐ ๋ง๋ค ์ ์๋ ๊ธธ์ด๊ฐ N์ธ ๋ชจ๋ 2์ง ์์ด์ ๊ฐ์๋ฅผ 15746์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
์ ํ์ ์ธ dp ๋ฌธ์
// ํ์ด : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
using namespace std;
const int NUMBER = 15746;
int main() {
int n;
cin >> n;
vector<int>dp(n+1);
dp[1] = 1;
dp[2] = 2;
for(int i=3; i<=n; i++) {
dp[i] = (dp[i-1] + dp[i-2])%NUMBER;
}
cout << dp[n];
return 0;
}
'๐๏ธ ICPC Sinchon > Dynamic Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 4883๋ฒ: ์ผ๊ฐ ๊ทธ๋ํ (0) | 2024.09.13 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 2688๋ฒ: ์ค์ด๋ค์ง ์์ (0) | 2024.09.06 |
[BOJ][C++] ๋ฐฑ์ค 11722๋ฒ: ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด (0) | 2024.08.19 |
[BOJ][C++] ๋ฐฑ์ค 10164๋ฒ: ๊ฒฉ์์์ ๊ฒฝ๋ก (0) | 2024.08.15 |
[BOJ][C++] ๋ฐฑ์ค 1699๋ฒ: ์ ๊ณฑ์์ ํฉ (0) | 2024.08.14 |