본문 바로가기
알고리즘 & 자료구조/백준

백준 11057

by 신재권 2022. 9. 19.
package baekjoon.DP;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main11057 {

   static int N;
   static int[][] D;

   public static void main(String[] args) throws Exception {
      input();
      go();
   }

   // D[i][last] : 길이가 i이며 last로 끝나는 오르막 수의 개수
   // D[i][j] = D[i-1][0] ... D[i-1][j]
   private static void go() {
      init();
      for (int i = 2; i <= N; i++) {
         for (int j = 0; j <= 9; j++) {
            for (int k = 0; k <= j; k++) {
               D[i][j] += D[i - 1][k];
               D[i][j] %= 10007;
            }
         }
      }
      int ans = 0;
      for (int i = 0; i <= 9; i++) {
         ans += D[N][i];
         ans %= 10007;
      }

      System.out.println(ans);
   }

   private static void init() {
      for (int i = 0; i < 10; i++) {
         D[1][i] = 1;
      }
   }

   private static void input() throws IOException {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      N = Integer.parseInt(br.readLine());
      D = new int[N + 1][10];
   }
}

'알고리즘 & 자료구조 > 백준' 카테고리의 다른 글

백준 15681  (0) 2022.09.20
백준 11066  (1) 2022.09.20
백준 1916  (0) 2022.09.18
백준 1005  (0) 2022.09.18
백준 2252  (0) 2022.09.18