[ λ¬Έμ λ§ν¬ ]
https://www.acmicpc.net/problem/10844
π© 쑰건
- κ³λ¨ μλ 45656μ²λΌ μΈμ ν λͺ¨λ μ리μ μ°¨μ΄κ° 1μΈ μλ₯Ό λ»ν¨
- Nμ΄ μ£Όμ΄μ§ λ, κΈΈμ΄κ° NμΈ κ³λ¨ μκ° μ΄ λͺ κ° μλμ§ κ΅¬ν΄λΌ
- κ·Έκ±Έ 1,000,000,000μΌλ‘ λλ λλ¨Έμ§λ₯Ό μΆλ ₯ν΄λΌ
π© μ κ·Ό
νμ¬ μ리μ μκ° 1μ΄λ©΄, λ€μ μ¬ μ μλ μλ 0κ³Ό 2μ΄λ€. 0κ³Ό 9λΌλ μμΈκ° μμ§λ§ 0~9κΉμ§μ μλ λͺ¨λ λΉμ·ν μμμ λλ€. κ·Έλμ μ νμμ μΈμΈ μ μμ§ μμκΉ? -> DP
π© μνμ°©μ€
μ νμμ μ°Ύμλ΄λ λ° κ΅μ₯ν λ§μ μκ°μ λ€μλ€.. D[i]λ₯Ό i λ€μ λμ¬ μ μλ μ κ°μλ‘ λλ¬λ³΄κΈ°λ νκ³ , F[i]λ κΈΈμ΄κ° iμΈ 0μΌλ‘ μμνλ κ²λ ν¬ν¨ν κ³λ¨ μ/D[i]λ 0μΌλ‘ μμνλ κ³λ¨ μ λ‘ λλ¬μ 빼보기λ νκ³ ..γ
μ΄λ ΅λ€κ³ μκ°μ΄ λ μ΄μ λ 0κ³Ό 9λ λ€λ₯Έ μμ λ€λ₯Έ μμμ 보μ΄κΈ° λλ¬Έμ΄μλλ°, κ·Έλμ DλΌλ ν μ΄λΈμ κΈΈμ΄λΏλ§ μλλΌ μμνλ μμ λν μ 보λ ν¬ν¨ν΄μΌ νλ€λ μκ°μ΄ λ€μλ€. κ·Έλμ κΈΈμ΄κ° iκ³ jλ‘ μμνλ κ³λ¨ μμ κ°μλ₯Ό μ μ₯νλ D[i][j]λΌλ ν μ΄λΈμ μ μνλ€.
κ·Έλ¦¬κ³ μ΄κΈ°κ°μΌλ‘ iκ° 1, 2μΌ λ 0~9μ jμ λν΄ λ¬Έμ μμ μ£Όμ΄μ§λλ‘ μ€μ ν΄μ£Όμκ³ , μ΄ν μ νμμ κ³μ°ν λ jκ° 0 λλ 9μΌ κ²½μ° 0μ΄ λλλ‘ μμΈμ²λ¦¬? ν΄μ£Όμλ€.
κ·Έλ¦¬κ³ μ€λ²νλ‘μ° λ°©μ§λ₯Ό μν΄ κ³μ° μ€κ°μ€κ°μ 1,000,000,000μ λν % μ°μ°μ ν΄μ£Όμλ€.
λ μ΄ νμ΄κ° λκ° λΉν¨μ¨μ μ΄λΌ μκ°ν΄μ νκ³ λ ν λ€λ₯Έ νμ΄λ₯Ό μ°Ύμλ΄€λλ°, μ΄ νμ΄κ° λλΆλΆμ΄μλ€..
π» μ½λ (C++)
#include <iostream>
using namespace std;
int D[101][10]; //1-indexed, 0-indexed
int sum;
int main(){
for(int i=0; i<10; i++){
if(i==0){
D[1][i]=0;
D[2][i]=1;
}else if(i==9){
D[1][i]=1;
D[2][i]=1;
}else{
D[1][i]=1;
D[2][i]=2;
}
}
int n;
cin>>n;
for(int i=3;i<=n;i++){
for(int j=0;j<10;j++){
if(j==0)
D[i][j]=0+D[i-1][j+1];
else if(j==9)
D[i][j]=D[i-1][j-1]+0;
else
D[i][j]=D[i-1][j-1]+D[i-1][j+1];
D[i][j]%=1000000000;
}
}
for(int i=1;i<10;i++){
sum+=D[n][i];
sum%=1000000000;
}
cout<<sum;
}
'π» Algorithms > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 1929 μμ ꡬνκΈ° - μλΌν μ€ν λ€μ€μ 체 (0) | 2024.09.15 |
---|---|
[λ°±μ€] 12865 νλ²ν λ°°λ - λ€μ΄λλ―Ή νλ‘κ·Έλλ° (0) | 2024.09.01 |
[λ°±μ€] 11727 2xn νμΌλ§2 - λ€μ΄λλ―Ή νλ‘κ·Έλλ° (0) | 2024.08.31 |
[λ°±μ€] 1932 μ μ μΌκ°ν - λ€μ΄λλ―Ή νλ‘κ·Έλλ° (0) | 2024.08.31 |
[λ°±μ€] 1003 νΌλ³΄λμΉ ν¨μ - λ€μ΄λλ―Ή νλ‘κ·Έλλ° (0) | 2024.08.31 |