[ 다먹살 ]/- Coding

[백준] 14494 다이나믹이 뭐예요?

엉망으로살기 2022. 4. 5. 19:45
반응형

https://www.acmicpc.net/problem/14494

 

14494번: 다이나믹이 뭐예요?

(1, 1)에서 (n, m)에 도달하는 경우의 수를 구하여라. 단, 경우의 수가 엄청 커질 수 있으므로 경우의 수를 1,000,000,007(=109+7)로 나눈 나머지를 출력한다.

www.acmicpc.net

 

dp 개념을 익히는 기본적인 문제였다. 주의할 점은 int형 배열로 선언할 경우 오버플로우가 난다는 점이었는데, long 형태의 배열을 선언하면 쉽게 해결이 되었다.


문제


입출력 예제

 


코드

import java.util.Scanner;

public class Main
{
     public static void main(String[] args)
     {
         Scanner sc = new Scanner(System.in);
         int n = sc.nextInt();
         int m = sc.nextInt();
         final int divide = 1000000007;
         long[][] way = new long[n][m];

         // way 초기화
         for(int i=0; i<n; i++)
         {
              way[i][0] = 1;
         }
         for(int i=0; i<m; i++)
         {
             way[0][i] = 1;
         }
         // dp 실행
         for(int i=1; i<n; i++)
         {
              for(int j=1; j<m; j++)
              {
                 way[i][j] = (way[i-1][j] + way[i][j-1] + way[i-1][j-1])%divide;
              }
         }

         System.out.println(way[n-1][m-1]%divide);
         sc.close();
     }
}

 

반응형