[μκ³ λ¦¬μ¦ PS] λ°±μ€ 10844 μ¬μ΄ κ³λ¨ μ μλ° λ¬Έμ νμ΄
λ¬Έμ
ν΄λΉ ν¬μ€ν μ λ°±μ€μ 10844λ² μ¬μ΄ κ³λ¨ μ μ μ κ·Όκ³Ό ν΄κ²° λ°©λ²μ μ€λͺ ν κΈ μ λλ€.
μ λ΅ μμ€ μ½λλ₯Ό νμΈνμλ €λ©΄ solve url μμ νμΈ κ°λ₯ν©λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ΄λ€ λ°©μμΌλ‘ μ κ·Όν΄μΌ νλμ§λ₯Ό λ¨Όμ μκ°ν΄λ³΄μ.
ν΄κ²°λ²
μ°μ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μλ μ리μμ λν κ°λ μ λ¨Όμ μμμΌ νλ€.
45765 μ΄λΌλ μκ° μλ€λ©΄ ν΄λΉ μλ κ°μ₯ μΌμͺ½μ μκ° μ μΌ λμ μ리 μκ° λλ€.
μ¦
4 5 7 6 5
5μ리 4μ리 3μ리 2μ리 1μ리
κ·ΈλΌ μ°λ¦¬λ μ΄ λ¬Έμ λ₯Ό nλ²μ¨° μ리μ n-1 λ²μ§Έ μλ¦¬λ‘ μ νμμ λ§λ€ μ μλ€.
νμ¬ nλ²μ§Έ μ리μμ μ°μΌ μ μλ n-1 λ²μ¨° μ리μ μ«μλ€μ μ°μ νμλ₯Ό λνλ©΄ μ΅μ’ μ νμμ΄ λμ€κ² λλ€.
a[n] = [n-1]
μ κ·Όλ²
μμ μ νμμ ꡬμ±νκΈ° μν΄ μ΄λ€ μκ° nλ²μ§Έ μ리μμ λμ¬ μ μλμ§ μμ보μ.
nλ²μ¨° μ리μ μκ° μλ₯Ό λ€μ΄ 3μ΄λΌκ³ νλ©΄ n-1λ²μ§Έ μ리μμ μ¬μ©λ μ μλ νμλ μ΄ 2νμ΄λ€.
23, 32.
κ·ΈλΌ λͺ¨λ nλ²μ¨° μ리μ μ (0~9κΉμ§)λ μμ κ°μ΄ 2λ² μ°μΌκΉ?
λ€μ κ²½μ°λ₯Ό λ΄λ³΄μ.
- 0μΌλ‘ μμνλ μλ μμΌλ 0μΌλ‘ λλλ κ³λ¨ μλ μ‘΄μ¬ν¨. μ¦ 10 μμλ§ μ°μΌ μ μμ
- 9λ n-1λ²μ§Έ μμ 8μμλ§ μ°μΌ μ μμ.
κ±°κΈ°μ μ°λ¦¬κ° μ°Ύμ 쑰건 nλ²μ§Έ μ리 μ mμ n-1λ²μ§Έμμ 2λ²μ© μ¬μ©λ¨μ μΆκ°νλ©΄ λ€μκ³Ό κ°μ μ νμμ΄ λμΆλλ€.
// n: nλ²μ¨° μ리μ
// m: nμ리 μμ ν΄λΉνλ μ 0 ~ 9
// mμ΄ 0μΈ κ²½μ°
a[n][m] = a[n-1][1];
// mμ΄ 1 ~ 8 μ¬μ΄μΈ κ²½μ°
a[n][m] = a[n-1][m+1] + a[n-1][m-1];
// mμ΄ 9μΈ κ²½μ°
a[n][m] = a[n-1][9];
μ€λ΅ ν보
κ·Έλ¦¬κ³ μ£Όμν΄μΌν κ²μ΄ μ΄λ²μλ μμ mod μ°μ°μ΄ μλκΉ μΆλ€.
μ΄λ²μλ κΈ°μ‘΄ λͺ¨λλ¬μ μ‘°κΈ λ€λ₯Ό μ μλ€.
10μ΅μΌλ‘ λλ λλ¨Έμ§λ₯Ό μΆλ ₯νλΌλΌλ μ΄μ κ° μ°λ¦¬κ° μ΄λ€ μλ₯Ό λμ΄κ°λ©΄ κ²°κ³Όλ‘ 10μ΅μ΄ λκ² λμμ μ μ μ€λ²νλ‘κ° λ°μνκΈ° λλ¬Έμ΄λ€.
κ·ΈλΌ νλμ μμ κ°μ (arr[n][m])
μ΅λ 10μ΅μ΄ λ μ μκ³ (arr[n])
μ ν¬κΈ°λ μ΅λ 100μ΅ - arr[n][0]
μ΄ λ μ μλ€.
κ·Έλμ κ°μ μ μ₯ν λμλ λͺ¨λλ¬λ₯Ό μνν΄μΌ νλ€.
μ¬κΈ°μ λμΌκΉ?
κ°μ μ μ₯ν λλ λͺ¨λλ¬λ‘ λ£μ΄μ€¬μΌλ©΄ μ΅μ
μ κ²½μ° μΆλ ₯ν λλ 100μ΅ μΈμ λ¦¬κ° λ μ μμΌλ―λ‘ μΆλ ₯μ ν λλ λͺ¨λλ¬λ₯Ό μνν΄μ£Όμ.
μ΄κ² λλ¬Έμ λ§μ΄ νλ Έλ€..
μ λ΅ μ½λ
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[][] arr = new int[101][10];
for(int i = 1; i <= 9; i++) arr[1][i] = 1;
for(int i = 2; i <= n; i++){
arr[i][0] = arr[i-1][1];
arr[i][9] = arr[i-1][8];
for(int j = 1; j <= 8; j++) {
arr[i][j] = (arr[i-1][j+1] + arr[i-1][j-1]) % 1000000000;
}
}
int answer = 0;
for(int i = 0; i <= 9; i++) {
answer = (answer + arr[n][i]) % 1000000000;
}
bw.write(String.valueOf(answer));
bw.flush();
bw.close();
}
}