νμκ° λλ¬κ³ , μ΄μ μ μλ₯Ό νλ μκ°μ΄λ€. λͺ¨λ μ¬λμ μ§μ¬κ°ν νμ νλμ ν λ©΄μ μμμλ€.
μ리λ₯Ό λ²μ΄λμ§ μκ³ μ μλ₯Ό νλ λ°©λ²μ μλ μ΄ λͺ κ°μ§μΌκΉ?
κ° μ¬λλ€μ μμ μ μΌμͺ½μ΄λ μ€λ₯Έμͺ½μ μλ μ¬λλ€κ³Ό μ μλ₯Ό ν μ μλ€. (μ ν μλ μλ€)
μ λ ₯
첫째 μ€μ νμμ μ°Έμν μ¬λμ μ n (1 ≤ n ≤ 10,000,000)μ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ μ μλ₯Ό νλ λ°©λ²μ μλ₯Ό μΆλ ₯νλ€. μκ° λ§€μ° μ»€μ§ μ μκΈ° λλ¬Έμ, λ§μ§λ§ μλ¦¬λ§ μΆλ ₯νλ€.
νμ΄
iλͺ μ μ¬λλ€μ΄ μ μνλ κ²½μ°μ μ μ€
1. λ§μ§λ§ λ μ¬λμ΄ μ μνλ κ²½μ°μ μ
2. λ§μ§λ§ λ μ¬λμ΄ μ μνμ§ μλ κ²½μ°μ μ
λΌλ©΄,
i+1λͺ μ μ¬λλ€μ΄ μ μνλ κ²½μ°μ μλ
γ±. 1λ² && iλ² μ¬λκ³Ό i+1λ² μ¬λμ΄ μ μ λͺ»ν¨
γ΄. 2λ² && iλ² μ¬λκ³Ό i+1λ² μ¬λμ΄ μ μ ν¨
γ·. 2λ² && iλ² μ¬λκ³Ό i+1λ² μ¬λμ΄ μ μ μν¨
= γ±+γ΄+γ· ν©μΌλ‘ ꡬν΄μ§λ€
μ΄λ γ΄μ 1λ²μ΄ λκ³ γ±+γ·μ 2λ²μ΄ λλ€.
μ½λμμλ pair λ²‘ν° dp[i] = {1λ², 2λ²}λ‘ λκ³ κ³μ°νλ€.
// νμ΄ : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
using namespace std;
typedef pair<int,int> ci;
const int INF = 10000001;
int main() {
int n;
cin >> n;
vector<ci>dp(INF);
dp[1] = {0,0};
dp[2] = {1,1};
for(int i=3; i<INF; i++) {
ci before = dp[i-1];
int yes = before.second % 10; // λ§μ§λ§ λ μ¬λμ΄ μ
μ ν¨
int no = (before.first+before.second) % 10; // μ
μ μν¨
dp[i] = {yes, no};
}
cout << (dp[n].first + dp[n].second)%10 << "\n";
return 0;
}
'ποΈ ICPC Sinchon > Dynamic Programming' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ][C++] λ°±μ€ 10164λ²: 격μμμ κ²½λ‘ (0) | 2024.08.15 |
---|---|
[BOJ][C++] λ°±μ€ 1699λ²: μ κ³±μμ ν© (0) | 2024.08.14 |
[BOJ][C++] λ°±μ€ 2293λ²: λμ 1 (0) | 2023.11.24 |
[BOJ][C++] λ°±μ€ 11052λ²: μΉ΄λ ꡬ맀νκΈ° (0) | 2023.11.20 |
[BOJ][C++] λ°±μ€ 1890λ²: μ ν (0) | 2023.11.14 |